私は最近Python GUIプログラミングをしており、次のようにtkinterをインストールするように依頼しました。
apt-get install python3-tk
次のディレクトリでpython3コンソールを開くと、すべてがうまくいきます。
~/python-gui/
しかし、「python-gui」フォルダ内の「tkinter」という別のフォルダに移動して、次のコードをコンパイルしてみました。
import tkinter as tk
class Application(tk.Frame):
def __init__(self, master=None):
tk.Frame.__init__(self, master)
self.pack()
self.createWidgets()
def createWidgets(self):
self.hi_there = tk.Button(self)
self.hi_there["text"] = "Hello World\n(click me)"
self.hi_there["command"] = self.say_hi
self.hi_there.pack(side="top")
self.QUIT = tk.Button(self, text="QUIT", fg="red",
command=root.destroy)
self.QUIT.pack(side="bottom")
def say_hi(self):
print("hi there, everyone!")
root = tk.Tk()
app = Application(master=root)
app.mainloop()
私がやった
python3 tkinter.py
驚いたことに、このエラーが発生しました。
Traceback (most recent call last):
File "tkinter.py", line 1, in <module>
import tkinter as tk
File "/root/python_gui/tkinter/tkinter.py", line 3, in <module>
class Application(tk.Frame):
AttributeError: 'module' object has no attribute 'Frame'
そのため、そのパスからpython3コンソールに移動してコンソール内からtkinterを取得しようとしましたが、再度同じエラーが発生しました。しかし、「python-gui」フォルダの下で同じコードを直接コンパイルしようとすると、正しくインポートしてコンパイルされ、私は試した「~/python-gui/tkinter/」フォルダにあります。
/usr/bin/python3.4
tkinterを再インポートしませんでしたが、出てからやり直してください。 「/tkinter/」フォルダでPythonモジュールが機能しないのはなぜですか?この問題をどのように解決できますか?
ありがとうございます。
オペレーティングシステム情報: Linux root 4.0.0-kali1-amd64 #1 SMP Debian 4.0.4-1+kali2 (2015-06-03) x86_64 GNU/Linux
アナコンダ:アナコンダ3.4.2
答え1
まあ、残念ながら、tkinterモジュールを呼び出すときにプログラムファイル名をtkinter.pyとして指定しました。モジュールは通常、フォルダに関係なく機能する必要があり、ファイルの名前を変更すると操作が完了しました。すでにファイルが存在するので、モジュール名と同じ名前でファイル名を指定できます。