我想创建一个弹出消息框,提示用户输入输入。我在一个类中有这个方法。我的代码基于this guide by 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中创建一个接受用户输入的消息框?
答案 0 :(得分:14)
我对你的两个不同的代码块感到有点困惑。只是解决第一个代码块,没有任何反应,因为你永远不会进入主循环。为此,您需要致电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函数)。
主窗口:
“点击我”窗口:
“点击我”时主窗口打开:
答案 1 :(得分:6)
df['Date'] = pd.to_datetime(df['Date']).dt.tz_convert(None)
print (df)
User Date
0 George 2020-06-11 19:38:01
1 Bob 2020-06-11 19:02:02
2 Ryan 2020-06-11 19:20:02
3 Tyler 2020-06-11 19:40:09
享受...
答案 2 :(得分:-1)
我刚刚尝试过:
def get_me(): s = simpledialog.askstring(“输入字符串”,“请输入您添加的文本”)