简体   繁体   English

Python 2.7 Tkinter刷新窗口

[英]Python 2.7 Tkinter refresh window

I am trying to program a GUI as a school project, it would be a program which displays game scores. 我正在尝试将GUI编程为学校项目,这将是一个显示游戏分数的程序。 I would have two windows, one in which you add points, one in which displays the score. 我将有两个窗口,一个在其中添加点,一个在其中显示分数。 However, I can't manage to make the two interact. 但是,我无法使两者互动。 Please help ! 请帮忙 ! Here's my (long) code : 这是我的(长)代码:

from tkinter import *
import pickle
##PICKLE##
gd = {"t1" : 0,"t2" : 0}

#######FUNCTIONS######
def t11():
    gd["t1"] += 10

def t12():    
    gd["t1"] += 20

def t13():    
    gd["t1"] += 30

def t14():
    gd["t2"] -= 10

def t21():   
    gd["t2"] += 10

def t22():   
    gd["t2"] += 20

def t23():
    gd["t2"] += 30

def t24():
    gd["t2"] -= 10
####UNVARIABLES####
while 1==1:
   tk = Tk()
   tk.configure(background="#a1dbcd")
   lbl = Label(tk, text="Team1",fg="red",bg="#a1dbcd",font=("Comicsans", 60))
   lbl.grid(row=0, column=0)
   lbl_ = Label(tk, text="                                                 ",bg="#a1dbcd",font=("Helvetica", 40)).grid(row=0,column=1)
   lbl2 = Label(tk, text="Team2",fg="blue",bg="#a1dbcd",font=("Helvetica", 60))
   lbl2.grid(row=0, column=2)
   master = Tk()
   #####VARIABLES#####

lbb1 = Label(tk, textvariable=gd["t1"], fg="orange",bg="#a1dbcd",fon=("jjj",70))
lbb1.grid(row=1, column=0)
lbb2 = Label(tk, textvariable=gd["t2"], fg="orange",bg="#a1dbcd",fon=("jjj",70))
lbb2.grid(row=1, column=2)
##T1##T2#

l= Label(master, text='Team1')
b= Button(master, text='ADD        10 to T1', command=t11)
b2= Button(master, text='ADD        20 to T1', command=t12)
b3= Button(master, text='ADD        30 to T1', command=t13)
b4= Button(master, text='REMOVE 10 to T1',fg="red", command=t14)
ll= Label(master, text='Team2')
bb= Button(master, text='ADD        10 to T2', command=t21)
bb2= Button(master, text='ADD        20 to T2', command=t22)
bb3= Button(master, text='ADD        30 to T2', command=t23)
bb4= Button(master, text='REMOVE 10 to T1',fg="red", command=t24)

b.grid(row=1, column=1)
b2.grid(row=2, column=1)
b3.grid(row=3, column=1)
b4.grid(row=4, column=1)
l.grid(row=0, column=1)
bb.grid(row=1, column=3)
bb2.grid(row=2, column=3)
bb3.grid(row=3, column=3)
bb4.grid(row=4, column=3)
ll.grid(row=0, column=3)

######MAINLOOPS####
tk.mainloop()
master.mainloop()

That is because the first window's mainloop is stopping the other window from running until the first window has been destroyed. 这是因为第一个窗口的主循环正在停止另一个窗口的运行,直到第一个窗口被破坏为止。 Tkinter also has to run in the main thread, so you can't thread the window's mainloops. Tkinter还必须在主线程中运行,因此您无法对窗口的主循环进行线程化。 I would recommend just having one window and putting the score on top. 我建议只使用一个窗口并将分数放在最前面。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM