繁体   English   中英

在下面的代码仍在运行时使用 while true 循环(python)

[英]use a while true loop while the code below is still running (python)

我做这个游戏叫:

空闲笔,(制作笔)

每 1 秒我就会得到一支奖金笔

我怎么得到一支奖金笔是这样做的

Import time
While true
    make a pen()
    time.sleep(1)

但我在 while true 循环下有一些代码。 while true 循环下的代码就像升级笔或制作笔的按钮那么我如何使 while true 循环下的代码工作?

这是我的游戏我很高兴任何人都可以复制它还没有准备好

import functools
import tkinter
import tkinter.messagebox
import time
from random import seed
from random import randint

# eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee





window = tkinter.Tk()

window.title('Idle Pen')


def print_pen(number: int):
    return f"Pens: {number}"


class pencount:

    def __init__(self):
        self.pencount = 0
        self.text = tkinter.Text(height=1, width=30)
        self.text.insert("1.0", print_pen(0))
        self.text['state'] = 'disabled'
        self.text.pack()

    def changepencount(self, count):
        if self.pencount + count < 0:
            return
        self.pencount = self.pencount + count
        self.text['state'] = 'normal'
        self.text.delete("1.0", "end")
        self.text.insert("1.0", print_pen(self.pencount))
        self.text['state'] = 'disabled'
        self.text.pack()
        

pen = pencount()

changepenup = functools.partial(pen.changepencount, 1)
B = tkinter.Button(window, text="Make Pen", command=changepenup)


changependown = functools.partial(pen.changepencount, -100) 

A = tkinter.Button(window, text='Penmaker', command=changependown)

Q = tkinter.Button(window, text="Quit", command=window.destroy)

U = tkinter.Button


# eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

B.pack()
A.pack()
Q.pack()
    

window.mainloop()

您可以使用threading在单独的线程中运行循环,然后主线程可以运行tkitner

OR you can use tkinter function after() (instead of while True ) to run function with delay and this function should use again after() to run itself.

import tkinter as tk
        
# --- functions ---

def update():
    global value

    value += 1
    
    text = f'make penny: {value}'
    print(text)
    label['text'] = text

    # run again after 1s (1000ms)
    root.after(1000, update)

# --- main ---

value = 0

root = tk.Tk()

label = tk.Label(root, text="make penny: 0")
label.pack()

button = tk.Button(root, text="Exit", command=root.destroy)
button.pack()

# run first time after 1s (1000ms)
root.after(1000, update)

root.mainloop()  

 

暂无
暂无

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

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