gpt4 book ai didi

Python-让按钮随机改变位置

转载 作者:行者123 更新时间:2023-12-01 09:00:18 25 4
gpt4 key购买 nike

我需要能够在单击按钮时更改按钮位置。每次我点击它时,位置都会随机变化。但我得到的只是一个错误。这是我的代码:

from tkinter import *
from random import randrange

class Window(Frame):

def position(self):
return randrange(0,400),randrange(0,300)

def __init__(self,master=None):
Frame.__init__(self,master)
self.master = master
self.__init__window()

def __init__window(self):
self.master.title("GUI")
self.pack(fill=BOTH, expand=1)
Button1 = Button(self, text="Click me if you can",command=self.Message)
Button1.place(*position())
menu=Menu(self.master)
self.master.config(menu=menu)
file = Menu(menu)
file.add_command(label="Exit", command=self.client_exit)
menu.add_cascade(label="File",menu=file)
edit = Menu(menu)
edit.add_command(label="Show text", command=self.showText)
menu.add_cascade(label="Edit", menu=edit)

def Message(self):
print("Hello world")

def showText(self):
text = Label(self, text="Hey there!")
text.pack()

def client_exit(self):
exit()

root = Tk()
root.geometry("400x300")
app = Window(root)
root.mainloop()

“Button1.place”是需要更改的按钮的位置,但我完全不知道如何执行此操作。我也使用了变量。

最佳答案

似乎 place() 需要关键字参数。您可以让函数 position() 返回一个字典并将其解压到 place() 语句中:

def position(self):
return {'x':randrange(0,400),'y':randrange(0,300)}

放置按钮:

self.Button1.place(**self.position())

您还需要在按钮名称前添加“self”前缀,以便能够从函数 __init__window() 外部访问它。

然后只需在按钮回调函数中添加 place() 语句的副本即可:

def Message(self):
print("Hello world")
self.Button1.place(**self.position())

至少对我来说效果很好(win10下的Python 3.6.5)。

您必须减少为 x 和 y 生成的随机值,否则按钮的某些部分有时会位于窗口之外...

关于Python-让按钮随机改变位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52504286/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com