Кнопка Tkinter не отображается на TopLevel?
Это кусок кода, который я пишу для этого вопроса: Ввести текст в другом окне?
Странно, что случилось на mySubmitButton
Похоже, что кнопка не хочет появляться при первом запуске, однако она будет появляться при нажатии на нее. Даже если вы нажмете на нее и отпустите от кнопки, она не будет отправлена. Я подозреваю, происходит ли это только на Mac или только на моем компьютере, потому что это очень незначительная проблема. Или это что-то глупое, что я сделал с моим кодом.
self.mySubmitButton = tk.Button(top, text='Hello', command=self.send)
self.mySubmitButton.pack()
Я что-то пропустил? Я гуглил и нашел этот вопрос и ответ на daniweb. И я делаю различие по ним, не могу понять, что он сделал "исправлено", но я видел, что линия изменилась на command=root.quit
, Но это все равно отличается от моего...
Вот полный исходный код, и нет сообщения об ошибке, но кнопка просто отсутствует.
import tkinter as tk
class MyDialog:
def __init__(self, parent):
top = self.top = tk.Toplevel(parent)
self.myLabel = tk.Label(top, text='Enter your username below')
self.myLabel.pack()
self.myEntryBox = tk.Entry(top)
self.myEntryBox.pack()
self.mySubmitButton = tk.Button(top, text='Hello', command=self.send)
self.mySubmitButton.pack()
def send(self):
global username
username = self.myEntryBox.get()
self.top.destroy()
def onClick():
inputDialog = MyDialog(root)
root.wait_window(inputDialog.top)
print('Username: ', username)
username = 'Empty'
root = tk.Tk()
mainLabel = tk.Label(root, text='Example for pop up input box')
mainLabel.pack()
mainButton = tk.Button(root, text='Click me', command=onClick)
mainButton.pack()
root.mainloop()
- После добавления другой кнопки сразу появляется вторая. Я думал, что это может быть потому, что я не вызывал ту же функцию, но я вызвал ту же функцию, и она делает то же самое, что кажется...
- Добавление пустой метки между ними не работает. Кнопка все еще не рисуется.
PS: я использую Mac OS 10.5.8 и Tk 8.4.7.
1 ответ
Я вижу кнопку Привет, но я на Windows 7.
Я быстро переписал твой пример. Мне будет любопытно, если это будет иметь значение для вас.
import tkinter as tk
class GUI(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
mainLabel = tk.Label(self, text='Example for pop up input box')
mainLabel.pack()
mainButton = tk.Button(self, text='Click me', command=self.on_click)
mainButton.pack()
top = self.top = tk.Toplevel(self)
myLabel = tk.Label(top, text='Enter your username below')
myLabel.pack()
self.myEntryBox = tk.Entry(top)
self.myEntryBox.pack()
mySubmitButton = tk.Button(top, text='Hello', command=self.send)
mySubmitButton.pack()
top.withdraw()
def send(self):
self.username = self.myEntryBox.get()
self.myEntryBox.delete(0, 'end')
self.top.withdraw()
print(self.username)
def on_click(self):
self.top.deiconify()
gui = GUI()
gui.mainloop()