Кнопка 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()

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

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()
Другие вопросы по тегам