0

これは私のコードです:

import sys
import tkinter as tk
import os
mGui = tk.Tk()
mGui.geometry("300x300")
mGui.title("YourBowlingSpeed")
mlabel1 = Label (text = "my label")
mlabel1.place (x = 50,y = 150)

* を使用してインポートする習慣を変更しましたが、これは機能せず、エラーが表示されます。トレースバック (最後の最後の呼び出し): ファイル "C:\Python33\Projects\YorBowlingSpeed-.py"、7 行目、mlabel1 = ラベル (テキスト = "mylabel") NameError: name 'Label' が定義されていません

4

2 に答える 2

2

今、あなたが使っている

import tkinter as tk

tkウィジェットを作成するには参照が必要なtkinterので、代わりに

mlabel1 = Label (text = "my label")

使用する

mlabel1 = tk.Label (text = "my label")
#         ^^^

このパターンに切り替えてよかった!これで、コードを読んだ人なら誰でも、それLabelが の関数であることがすぐにわかりますtkinter。明確で読みやすく、名前空間の競合が発生せず、コードの保守が容易になります。

于 2013-08-21T12:19:20.637 に答える
2

クラスをグローバル名前空間に直接インポートしていませんLabel。モジュールのみをインポートしています。それを参照するには、次のことを行う必要があります。

tk.Label(text = "my label")

または、クラスをインポートできます。

from tkinter import Tk, Label

私は Tkinter を使ったことはありませんが、次のような構文はよく見たことがあります。

from tkinter import *

これはすべてのクラスをインポートするため、tk.クラス名の後ろに置く必要はありません。既に呼び出された変数がある場合Label、オーバーライドされるため、これは危険であることに注意してください。

于 2013-08-21T11:49:29.970 に答える