首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >图形用户界面- Tkinter

图形用户界面- Tkinter
EN

Stack Overflow用户
提问于 2014-04-16 13:55:09
回答 1查看 156关注 0票数 0

我使用Python2.7在label5中做图形用户界面,这是我第一次使用Python2.7,我似乎不能让代码工作- COMPARE按钮什么也做不了,它应该在tkinter中显示一些东西。此外,一些进程在另一个文件中运行(数据加载和处理)。

代码语言:javascript
复制
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("")
EN

回答 1

Stack Overflow用户

发布于 2014-04-16 18:32:08

do_compare()方法返回result,但该返回不会去任何地方。只需将标签的文本变量设置为变量result,它就会更新。您也不需要其中的bind方法,它什么也不做。下面是我正在讨论的一个例子:

代码语言:javascript
复制
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()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23101102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档