我正在使用我的第一个Python GUI并尝试修改此tkinter example,但我根本无法弄清楚如何为OK按钮编写回调函数在输入的主程序值上。
#!/usr/bin/python
# -*- coding: utf-8 -*-
from Tkinter import Tk, BOTH, StringVar, IntVar
from ttk import Frame, Button, Style, Label, Entry
class Example(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.initUI()
def initUI(self):
self.parent.title("Get Value")
self.style = Style()
self.style.theme_use("default")
self.pack(fill=BOTH, expand=1)
valueLabel = Label(self, text="Value: ")
valueLabel.place(x=10, y=10)
value=StringVar(None)
value.set("this is the default value")
valueEntry=Entry(self, textvariable=value)
valueEntry.place(x=70, y=10)
quitButton = Button(self, text="Quit", command=self.quit)
quitButton.place(x=10, y=50)
okButton = Button(self, text="OK", command=self.quit)
okButton.place(x=120, y=50)
def main():
root = Tk()
root.geometry("220x100+300+300")
app = Example(root)
root.mainloop()
if __name__ == '__main__':
main()
我已经阅读了大量的教程,但没有一个能够清楚地解释这一点。从理论上讲,我应该能够使用value.get()获取所选值,但无论我把它放在哪里,我都会收到错误消息。此外,AFAIK,我应该能够使用value.set()定义默认值,但这似乎没有效果,因为当我运行程序时文本框为空。
root.mainloop()终止后,将值传递给主python程序的最简单方法是什么? (实际的对话框包含几个用于输入字符串和整数值的输入框。)
即。我希望能够使用类似的东西:
root = Tk()
root.geometry("220x100+300+300")
app = Example(root)
root.mainloop()
print value
print value2
print value3
如何为输入框定义默认值?
答案 0 :(得分:2)
使用value
更改self.value
变量的每次出现。这应该修复它,并显示默认值。
更新
from Tkinter import Tk, BOTH, StringVar, IntVar
from ttk import Frame, Button, Style, Label, Entry
class Example(Frame):
def __init__(self, parent):
Frame.__init__(self, parent)
self.parent = parent
self.initUI()
def showMe(self):
print(self.value.get())
def initUI(self):
self.parent.title("Get Value")
self.style = Style()
self.style.theme_use("default")
self.pack(fill=BOTH, expand=1)
valueLabel = Label(self, text="Value: ")
valueLabel.place(x=10, y=10)
self.value=StringVar(None)
self.value.set("this is the default value")
valueEntry=Entry(self, textvariable=self.value)
valueEntry.place(x=70, y=10)
quitButton = Button(self, text="Quit", command=self.quit)
quitButton.place(x=10, y=50)
okButton = Button(self, text="OK", command=self.showMe)
okButton.place(x=120, y=50)
def main():
root = Tk()
root.geometry("220x100+300+300")
app = Example(root)
root.mainloop()
if __name__ == '__main__':
main()
答案 1 :(得分:0)
你的quitButton和okButton都会调用self.quit函数。因此,当您按下确定按钮时,无论您输入的是什么值,您都会调用退出函数,该函数既有自己的问题,也超出了您的问题范围。 尝试将值定义为self.value,并使okButton调用一个函数:print self.value.get()。