Python Tkinter 刷新标签

时间:2021-05-20 06:46:22

标签: python tkinter

import time
import keyboard
import tkinter as tk
from tkinter import *
from tkinter.font import Font
from tkinter import Image
import os

miners = 0
stone = 0
test = 0
czas = time.sleep(8)
automine = 0 

root = tk.Tk()
root.title("Let s Mine!")

bigfont = Font(family='Franklin Gothic Medium', size=42,weight='bold',slant='roman',underline=0,overstrike=0)

root.geometry("720x1080")
root.configure(bg="#add8e6")

l = Label(root, text = "LET'S MINE!",font=bigfont,bg="#add8e6", fg= "#ededd0")
l.grid(row=0,column=0)
l.pack()
w = Canvas(root, width=720, height=200)
photo = PhotoImage(file = r"C:\Users\RUDY RYC\Desktop\Adam\projekty\gra\stone.png")
w.configure(bg='#90EE90')
def mine():
    global stone
    time.sleep(5)
    stone += stone
    stone1.config(text=stone)
    
x = Button(root,  text="MINE STONE!", image=photo, command=mine)
stone1 = Label(root, text = stone, height=20, bg="#add8e6")
stone1.pack(side=tk.TOP)

x.configure(font=bigfont, height=150, width=150)

x.pack()

w.pack(side=tk.BOTTOM)

root.mainloop

while True:
    answer = input("Co chcesz zrobić?")
    if answer == "mine" and test == 0:
        test = 1

    if test == 1:
        test = 0
        print("Mining stone...")
        time.sleep(5)
        stone = stone+1

    if answer == "gornik" and stone >= 2:
        print('Poczekaj 4 Sekundy')
        time.sleep(4)
        print("Pomyslnie zdobyto Gornika")
        miners = miners+1
        stone = stone-2
        print("Masz teraz" + " " + str(miners) + " " + "Górników")
    elif stone < 2 and answer == "gornik":
        print('Nie masz wystarczajacej ilosci Kamienia')

    if miners >= 2 and answer == "automine":
        automine = 1 
        print('You turned on automatic mining')
    

我正在尝试制作类似于 Minecraft 世界中的采矿和其他内容的基本游戏。问题是每次发生我的事情时,我都试图用计数器(我的意思是 w)刷新标签,但它不起作用。任何想法我做错了什么?我试过刷新 rootw.update

1 个答案:

答案 0 :(得分:0)

接下来的问题是您有两个不同的程序,这里只有一个关于第一个程序的问题,您的 mine() 函数有点偏离。

  • 你把石头加到石头上,石头总是 0,因为石头最初是 0
  • 您没有更新标签
  • 您为 text 参数分配一个整数(可能有效,但不好)
  • 你在做任何事情之前睡觉,给人的印象是它已经冻结

您的函数应如下所示:

def mine():
    global stone
    stone += 1
    stone1.config(text=str(stone))
    stone1.update()
    time.sleep(5)

有了这个功能,它工作得很好。

(P.S:你混淆了顶层几何中的宽度和高度。使它:root.geometry("1080x720")

相关问题