15

我想创建一个弹出消息框,提示用户输入输入。我在一个类中有这个方法。我的代码基于java2s 的本指南

class MyDialog:
    def __init__(self, parent):
        top = self.top = Toplevel(parent)

        Label(top, text="Value").pack()

        self.e = Entry(top)
        self.e.pack(padx=5)

        b = Button(top, text="OK", command=self.ok)
        b.pack(pady=5)

    def ok(self):
        print "value is", self.e.get()
        self.top.destroy()

root = Tk()
d = MyDialog(root)

root.wait_window(d.top)

但在这方面,top = self.top = Toplevel(parent)对我不起作用。

我有一个我想要完成的模型。

图形用户界面样机

我的程序结构如下所示:

class MainUI:
   def__int__(self):
       ...
       self.initUI()

   def initUI(self):
       .......
       Popup = Button(self, text="Enter Value", command=self.showPopup)

   def showPopup(self):
       #create the popup with an Entry here

如何在 Python 中创建一个接受用户输入的消息框?

4

4 回答 4

25

我对你的两个不同的代码块有点困惑。只处理第一块代码,什么都没有发生,因为您从未进入主循环。为此,您需要调用root.mainloop(). 执行此操作的典型方法是向根小部件添加一个按钮并将回调函数绑定到 Button(包括d=MyDialog()root.wait_window(d.top)

这是一些基本代码,我希望它们能满足您的需求...

from Tkinter import *
import sys

class popupWindow(object):
    def __init__(self,master):
        top=self.top=Toplevel(master)
        self.l=Label(top,text="Hello World")
        self.l.pack()
        self.e=Entry(top)
        self.e.pack()
        self.b=Button(top,text='Ok',command=self.cleanup)
        self.b.pack()
    def cleanup(self):
        self.value=self.e.get()
        self.top.destroy()

class mainWindow(object):
    def __init__(self,master):
        self.master=master
        self.b=Button(master,text="click me!",command=self.popup)
        self.b.pack()
        self.b2=Button(master,text="print value",command=lambda: sys.stdout.write(self.entryValue()+'\n'))
        self.b2.pack()

    def popup(self):
        self.w=popupWindow(self.master)
        self.b["state"] = "disabled" 
        self.master.wait_window(self.w.top)
        self.b["state"] = "normal"

    def entryValue(self):
        return self.w.value


if __name__ == "__main__":
    root=Tk()
    m=mainWindow(root)
    root.mainloop()

我从 popupWindow 获取值并在主程序中使用它(看看与 b2 关联的 lambda 函数)。

主窗口:

主窗口

“点我”窗口:

点我窗口

“点击我”打开时的主窗口:

主窗口变灰

于 2012-04-05T00:41:18.763 回答
19
import tkinter as tk
from tkinter import simpledialog

ROOT = tk.Tk()

ROOT.withdraw()
# the input dialog
USER_INP = simpledialog.askstring(title="Test",
                                  prompt="What's your Name?:")

# check it out
print("Hello", USER_INP)

享受 ...

于 2020-07-01T08:13:04.167 回答
0

我在没有任何课程的情况下在 Tkinter 中完成了它。我创建了一个启动新窗口的函数。

popup.Tk()
popup.mainloop()

在那个窗口中,有一个 Entry 字段,我从中获取带有变量的文本,该变量的值为:entry.get()

然后,您可以将该变量用于您需要的任何内容,它将从该条目字段中获取文本。

于 2021-09-10T02:02:13.127 回答
-2

我刚试过这个:

def get_me(): s = simpledialog.askstring("输入字符串", "请输入您添加的文本")

来源:https ://www.youtube.com/watch?v=43vzP1FyAF8

于 2020-07-13T02:14:14.590 回答