2011-09-21 22 views
18

GUI kodunu standart kütüphane Tkinter ile Python 3.2 kullanarak test etmeye çalışıyorum ancak kütüphaneyi içe aktaramıyorum. 3.x, modülün tkinter denirPython'da Tkinter içe aktarırken ImportError

Traceback (most recent call last): 
File "<pyshell#9>", line 1, in <module> 
from Tkinter import * 
ImportError: No module named Tkinter 

cevap

27

sorunun kök Tkinter modülü Tkinter (sermaye "T") piton 2 adlandırılmış olmasıdır .x ve tkinter (küçük harf "t") python 3.x içinde.

Python 2 hem de kod çalışır hale getirmek için ve 3 böyle bir şey yapabilirsiniz:

Wildcard imports (from <module> import *) should be avoided

rağmen:

try: 
    # for Python2 
    from Tkinter import * 
except ImportError: 
    # for Python3 
    from tkinter import * 

Ancak PEP8 joker ithalatı hakkında şöyle demektedir PEP8'i göz ardı eden sayısız öğretici, PEP8'e uygun şekilde içe aktarma yolu şu şekilde olacaktır:

Bu şekilde içe aktarırken, tüm çizgi komutlarını tk. (örn .: root = tk.Tk(), vb.) Ile önek yapmanız gerekir. Bu, kodunuzun daha küçük bir yazım pahasına daha kolay anlaşılmasını sağlayacaktır. Hem tkinter hem de ttk'ın sıklıkla birlikte kullanıldığı ve aynı isimle sınıfları içe aktardığı göz önüne alındığında, bu iyi bir şeydir. Zen of python belirtildiği gibi: "açık, örtük olmaktan iyidir".

Not: as tk kısım isteğe bağlıdır, ama biraz daha az yazar yapalım: tk.Button(...)tkinter.Button(...)

vs
15

değil Tkinter:

from Tkinter import * 

root = Tk() 
w = Label(root, text="Hello, world!") 
w.pack() 
root.mainloop() 

kabuk raporları, bu hata:

Bu

benim test kodu tkinter (küçük harflerle) olarak Tkinter ile aşağıdaki şekilde

8
3.x için kod yeniden yazma

:

from tkinter import * 

root = Tk() 

w = Label(root, text="Hello, world!") 
w.pack() 

root.mainloop() 
İlgili konular