如何在python中打开随机数量的窗口



按下"点击未知";按钮随机数个窗口没有打开?

from tkinter import *
from tkinter.ttk import *
import webbrowser
import random
random1 = random.randint(1,1000)
random2 = random.randint(1,1000)
#main window
master = Tk()
master.geometry("1920x1080")
label = Label(master, text ="This is the main window")
label.pack(side = TOP, pady = 10)
master.title("NotAVirus")
#second window
class NewWindow(Toplevel):
def __init__(self, master = None):
super().__init__(master = master)
self.title("Lol Virus")
self.geometry("500x200+",random1,"+",random2)
label = Label(self, text ="This is a fake virus that might have worked we will find out :)")
label.pack()
#button
btn = Button(master, text ="Click for unkown",)

btn.bind("<Button>",
lambda e: NewWindow(master))

btn.pack(pady = 10)
mainloop()

到此为止,稍微改进了您的代码:

from tkinter import Tk, Button, Label, Toplevel
import random

random1 = random.randint(1, 1000)
random2 = random.randint(1, 1000)
#main window
master = Tk()
master.geometry("1920x1080")
label_main = Label(master, text="This is the main window")
label_main.pack(side='top', pady=10)
master.title("NotAVirus")

def create_windows():
for i in range(random.randint(1, 1000)):
NewWindow(master)

# second window
class NewWindow(Toplevel):
def __init__(self, parent):
Toplevel.__init__(self, parent)
self.parent = parent
self.title("Lol Virus")
self.geometry(f"500x200+{random1}+{random2}")
label = Label(self, text="This is a fake virus that might have worked we will find out :)")
label.pack()
self.update()

# button
btn = Button(master, text="Click for unkown", command=create_windows)
btn.pack(pady=10)
master.mainloop()

解释部分。我想你认为.geometry设置了窗口的数量,或者至少你希望窗口随机分布。有两个问题。随机函数只被调用一次,所以你只会得到两个不变的随机数。

下一件事:要创建多个窗口你需要真正创建它们,其中一种方法是只使用for循环,在那里我们可以实际插入随机位,每次调用函数时它都会得到随机数(也请注意,如果选择了更大的随机数,则需要一段时间才能创建所有这些窗口。(

最后,不需要真正将按钮绑定到函数,按钮类有一个名为command=的参数,一旦按下按钮,它将执行给定的函数。

现在谈谈那些随机比特:

class NewWindow(Toplevel):
def __init__(self, parent):
Toplevel.__init__(self, parent)
random1 = random.randint(1, 1000)
random2 = random.randint(1, 1000)
self.parent = parent
self.title("Lol Virus")
self.geometry(f"500x200+{random1}+{random2}")
label = Label(self, text="This is a fake virus that might have worked we will find out :)")
label.pack()
self.update()

您可以在类中移动它们,以便每次创建类实例时都调用它们

最新更新