[英]Graphical User Interface - Tkinter
I am doing GUI in tkinter using python 2.7, this is my first time and i can't seem to make the code work - the COMPARE
button doesn't do anything, it's suppose to display something in label5
. 我正在使用python 2.7在tkinter中进行GUI,这是我的第一次,而且我似乎无法使代码正常工作
COMPARE
按钮不执行任何操作,它假定在label5
显示某些内容。 Also, some processes runs in another file (data loading & processing). 另外,某些进程在另一个文件中运行(数据加载和处理)。
from Tkinter import *
import ttk
import tkMessageBox
class GUI:
core = None
root = None
ctr = 0
def __init__(self, r):
self.root = r
self.root.title("")
self.root.protocol("WM_DELETE_WINDOW", self.quit)
self.root.minsize(550, 550)
def set_core(self, c):
# set the core object
self.core = c
def init(self):
# string assigned to label that gets changed
self.processing = StringVar()
self.processing.set(".")
# create label and assign above processing string, pack it
self.label = ttk.Label(self.root, textvariable=self.processing)
self.label.pack()
self.label2 = Label(self.root, text="", pady = 40)
self.label2.pack()
self.label3 = Label(self.root, text="Please enter ", pady = 5)
self.label3.pack()
self.pc = StringVar(None)
self.pCode = Entry(self.root,textvariable = self.pcode, width = 15)
self.pCode.pack()
self.key = self.pCode.get()
self.button1 = Button(self.root, text='COMPARE', width = 8, pady = 5, command = self.do_compare)
self.button1.pack()
self.var5 = StringVar()
self.label5 = Label(self.root, textvariable=self.var5, pady = 70)
self.var5.set("Result here...")
self.label5.pack()
self.button2 = Button(self.root, text='CLEAR ALL', width = 8, command = self.clear)
self.button2.pack()
self.button3 = Button(self.root, text='QUIT', width = 8, command = self.quit)
self.button3.pack()
# create button to start the core thread doing work, pack it
# self.button = ttk.Button(self.root, text="Do work", command=self.do_work)
# self.button.pack()
# create another button that can be clicked when doing work, pack it
# self.button_2 = ttk.Button(self.root, text=str(self.ctr), command=self.inc_ctr)
# self.button_2.pack()
def do_compare(self):
result = ""
if len(self.key) ==5 or len(self.key) 6:
result =self.do_work()
self.var5.set(result)
else:
result = 'Invalid Entry, please enter 5-6 alpha numeric characters... !'
self.var5.set(result)
def quit(self):
# our quit method to ensure we wait for the core thread to close first
if not self.core.processing:
self.core.running = False
self.root.quit()
# call back method for button
def do_work(self):
self.core.process_request()
# call back method for clear button
def clear(self):
self.var5.set("Result will be here...")
self.pc.set("")
The do_compare()
method is returning result
, but that return isn't going anywhere. do_compare()
方法返回result
,但是返回不会随处可见。 Just set the Label's textvariable to the variable result
, and it will update. 只需将Label的textvariable设置为变量
result
,它将更新。 You also don't need that bind
method in there, that's not doing anything. 您也不需要在那里的
bind
方法,这什么也没做。 Here's an example of what I'm talking about: 这是我正在谈论的示例:
root = Tk()
def change_var(): # function to get 'result'
var.set('Result') # set var to 'result'
var = StringVar() # create var
var.set('Empty Label') # set var to value
label = Label(root, textvariable=var) # make label to display var
label.pack()
Button(root, text='Change [var]', command=change_var).pack()
root.mainloop()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.