Кнопка Tkinter не отображается в TopLevel?

Это фрагмент кода, который я пишу для этого вопроса: Текст ввода в другом окне?

Странно, что произошло в mySubmitButton , кажется, что кнопка не хочет появляться при первом запуске, но будет отображаться, когда вы нажмете на нее. Даже если вы нажмете на него и отпустите его от кнопки, таким образом, он не будет отправлен. Я подозреваю, что это происходит только на Mac, или это происходит только с моим компьютером, потому что это очень небольшая проблема. Или это что-то глупое с моим кодом.

 self.mySubmitButton = tk.Button(top, text='Hello', command=self.send) self.mySubmitButton.pack() 

Я что-то упускаю? Я искал Google и нашел этот вопрос и ответил на 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() 

введите описание изображения здесь

введите описание изображения здесь

  1. Добавив еще одну кнопку сразу после этого, появится вторая. Я подумал, что это может быть потому, что я не назвал ту же функцию, но я назвал ту же самую, и она делает то же самое, что и появляется …
  2. Добавление пустой метки между ними не работает. Кнопка все еще не используется.

введите описание изображения здесь

PS: Я использую Mac OS 10.5.8 и Tk 8.4.7.

  • Изменение текста на ярлыке
  • Не удается передать аргументы из функции tkinter widget.after
  • Как создать дочернее окно и установить связь с родителем в TkInter
  • неустранимый текст в tkinter
  • ValueError: неверный литерал для int () с базой 16: '\ x0e \ xa3' Python
  • Получить содержимое виджета Tkinter Entry
  • Python3.5 backend_tkagg больше не доступен?
  • Создание всплывающего окна с полем «Ввод»
  • One Solution collect form web for “Кнопка Tkinter не отображается в TopLevel?”

    Я вижу кнопку привет, но я на окнах 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() 
    Python - лучший язык программирования в мире.