私はPython 2.7を使用しています。私のコードを実行しようとしている間に私は奇妙なエラーが発生しました。python 2.7 Tkinter tclエラー
Traceback (most recent call last):
File "E:/cyber/PYTHON/client/main.py", line 16, in <module>
main()
File "E:/cyber/PYTHON/client/main.py", line 9, in main
menubutton_auth = auth_page.set_menu_button(root)
File "E:\cyber\PYTHON\client\auth_page.py", line 15, in set_menu_button
menubutton.menu.add_command(label=LOG_IN, command=self.log_in_page)
File "C:\Heights\PortableApps\PortablePython2.7.6.1\App\lib\lib-tk\Tkinter.py", line 2683, in add_command
self.add('command', cnf or kw)
File "C:\Heights\PortableApps\PortablePython2.7.6.1\App\lib\lib-tk\Tkinter.py", line 2674, in add
self._options(cnf, kw))
_tkinter.TclError: invalid command name ".36805008.36805608"
エラーは、コマンドに参照されている:私は、Python 3でそれを実行しようとしたとき
menubutton.menu.add_command(label=LOG_IN, command=self.log_in_page)
は、それが完全に働いたが、Pythonの2.7と、このエラーが発生します。この行に間違っていることがありますか?
ありがとうございました。
コード:
from pages_menu import *
from Tkinter import *
import tkMessageBox
class AuthPage(Page):
def __init__(self, root):
Page.__init__(self, root)
self.root = root
self.socket = None
def set_menu_button(self, root):
menubutton = super(AuthPage, self).set_menu_button(root)
self.log_in_page()
menubutton.menu.add_command(label=LOG_IN, command=self.log_in_page)
menubutton.menu.add_command(label=REGISTER, command=self.register_page)
return menubutton
def log_in_page(self):
self.clear_screen(self.root)
self.add_elements(self.root, LOG_IN)
text = Label(self.root, bd=0, font=self.font1, text=LOG_IN_TEXT, pady=100)
text.pack()
self.display_structure()
l = Label(self.root, pady=20)
l.pack()
button = Button(self.root, bg=ROYAL_BLUE, activebackground=ROYAL_BLUE,
font=self.font1, fg=WHITE, text=LOG_IN,
command=self.log_in_user)
button.pack()
def register_page(self):
self.clear_screen(self.root)
self.add_elements(self.root, REGISTER)
text = Label(self.root, bd=0, font=self.font1, text=REGISTER_TEXT, pady=40)
text.pack()
self.display_structure()
global entry_email
label_email = Label(self.root, fg=CHOCOLATE, bd=0, font=self.font1, text=EMAIL, pady=20)
label_email.pack()
entry_email = Entry(self.root, bg=GREEN, bd=5, font=self.font1, exportselection=0, fg=RED)
entry_email.pack()
l = Label(self.root, pady=20)
l.pack()
button = Button(self.root, bg=ROYAL_BLUE, activebackground=ROYAL_BLUE,
font=self.font1, fg=WHITE, text=LOG_IN,
command=self.register_user)
button.pack()
def display_structure(self):
global entry_username
global entry_password
label_username = Label(self.root, fg=CHOCOLATE, bd=0, font=self.font1, text=USERNAME, pady=20)
label_username.pack()
entry_username = Entry(self.root, bg=GREEN, bd=5, font=self.font1, exportselection=0, fg=RED)
entry_username.pack()
label_password = Label(self.root, fg=CHOCOLATE, bd=0, font=self.font1, text=PASSWORD, pady=20)
label_password.pack()
entry_password = Entry(self.root, bg=GREEN, bd=5, font=self.font1, exportselection=0, fg=RED, show="*")
entry_password.pack()
def log_in_user(self):
global entry_username
global entry_password
request = "database#login#" + entry_username.get() + "#" + entry_password.get()
self.make_socket()
self.socket.send(request)
answer = self.socket.recv(CHECK_BUFFER)
if answer == OK:
save_username(entry_username.get())
self.enter()
else:
tkMessageBox.showwarning("INVALID", "Invalid username or password")
def register_user(self):
global entry_username
global entry_password
global entry_email
request = "database#register#" + entry_username.get() + "#" + entry_password.get() + "#" + entry_email.get()
self.make_socket()
self.socket.send(request)
answer = self.socket.recv(CHECK_BUFFER)
if answer == OK:
save_username(entry_username.get())
self.enter()
else:
tkMessageBox.showwarning("INVALID", "Those username or password already exists")
def enter(self):
self.clear_all_screen(self.root)
menubutton = super(AuthPage, self).set_menu_button(self.root)
add_menu(self.root, menubutton)
home_page()
def make_socket(self):
self.socket = socket.socket()
self.socket.connect((SERVER, PORT))
私は 'Page.set_menu_button'が何をしているのか知る必要があると思います。無関係なコードをすべて削除し、[最小限の、完全で検証可能な例]を作成してください(http://stackoverflow.com/help/mcve) –