[英]How to make randomly pop some gui without stopping the script #python 2.7
我對python比較陌生,所以請多多包涵。
我的問題有兩個方面:
首先,我試圖制作一個GUI,每次在新框架中向用戶隨機彈出不同的句子。
其次,我希望用戶能夠在不停止腳本的情況下關閉GUI,就像腳本在后台運行一樣。
這是我的代碼:
import Tkinter as tk
import random
number = random.randint(0,13)
sentence = {contains 13 sentences
}
window = tk.Tk()
window.output = tk.Label(text = sentence[number])
window.title("I Always See You")
window.geometry("300x150")
def next():
rand= random.randint(0, 13)
window2 = tk.Tk()
window2.output = tk.Label(text = sentence[rand])
window2.output.pack(side="top", fill="x", expand=True)
window2.title("I Always See You")
window2.geometry("300x150")
window.output.pack(side="top", fill="x", expand=True)
choice()
window.after(1000, next)
window.mainloop()
我的問題是:當第二個框架彈出時,沒有任何文本顯示,並且如果確實有彈出的東西出現在第一個框架中。
另外,如何在.after()中插入隨機浮點數?
非常感謝你的幫助!
干杯
您不會在第二個窗口中看到該文本,因為Tkinter無法處理兩個主窗口。 您需要將Toplevel
類用於其他類。 另外,您還沒有在next
指定標簽的父級,因此它很可能打包在window
而不是window2
。
另外,您需要14個句子,因為randint
不同於randrange
包含兩個端點。
要在after
設置一個隨機時間,只需使用randint
因為它需要整數毫秒。
為了實現您想要的功能,建議您創建一個將退出的主窗口(它將在后台運行)。 然后彈出帶有隨機句子的“頂級”。 您需要再次撥打after
里面next
,如果你想窗戶,保持坡平了功能。 為了防止用戶關閉頂層after
取消,我從撤回的主窗口中調用after
方法:
import Tkinter as tk
import random
number = random.randint(0,13)
sentence = {i: str(i) for i in range(14)}
def next():
rand=random.randint(0, 13)
window2 = tk.Toplevel(root)
window2.output = tk.Label(window2, text=sentence[rand])
window2.output.pack(side="top", fill="x", expand=True)
window2.title("I Always See You")
window2.geometry("300x150")
tps = random.randint(1000, 10000)
root.after(tps, next)
root = tk.Tk()
root.withdraw() # hide root window
window = tk.Toplevel(root)
window.output = tk.Label(window, text=sentence[number])
window.title("I Always See You")
window.geometry("300x150")
window.output.pack(side="top", fill="x", expand=True)
tps = random.randint(1000, 10000)
root.after(tps, next)
root.mainloop()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.