1

这是我为这个问题编写的一段代码:Entry text on a different window?

发生的事情真的很奇怪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。

4

1 回答 1

4

我看到了 hello 按钮,但我在 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()
于 2012-04-07T07:09:03.180 回答