Python 如何将按钮相邻放置?

Python 如何将按钮相邻放置?,python,tkinter,Python,Tkinter,我有两个按钮 我想把它们放在一起 代码如下: myButton = Button(root, text="Bitcoin ", padx=50, pady=50, command=myClick, bg="black", fg="red").pack() #myButton.grid(row=0, column=0) myButton2 = Button(root, text="Ethereum", padx=50

我有两个按钮

我想把它们放在一起

代码如下:

myButton = Button(root, text="Bitcoin ", padx=50, pady=50, command=myClick, bg="black", fg="red").pack()
#myButton.grid(row=0, column=0)
myButton2 = Button(root, text="Ethereum", padx=50, pady=50, command=myClick2, bg="gold", fg="green").pack()
#myButton2.grid(row=0, column=1)
当我用grid这样运行它时,我有两个按钮在下面,当我用grid运行它时,我得到以下错误:

  File "button.py", line 30, in <module>
    myButton.grid(row=0, column=0)
AttributeError: 'NoneType' object has no attribute 'grid'
文件“button.py”,第30行,在
myButton.grid(行=0,列=0)
AttributeError:“非类型”对象没有属性“网格”

如何解决此问题?

要使按钮大小相同,您可以将列配置为具有相同的大小:

root.columnconfigure(0, weight = 1, minsize = 100)
root.columnconfigure(1, weight = 1, minsize = 100)
您必须在pack()和grid()之间进行选择,但是您同时使用这两种方法。必须删除行末尾的.pack()。因此,您的代码应该如下所示:

myButton = Button(root, text="Bitcoinn ", padx=50, pady=50, command=myClick, bg="black", fg="red")
myButton.grid(row=0, column=0, sticky="nsew")
myButton2 = Button(root, text="Ethereum", padx=50, pady=50, command=myClick2, bg="gold", fg="green")
myButton2.grid(row=0, column=1, sticky="nsew")
root.mainloop()
我将sticky参数添加到grid函数中。此参数决定图元与哪一侧对齐:n=北s=南e=东w=西。如果你像我一样把它们都放进去:sticky=“nsew”它会填充整个网格字段

要解决myClick的问题,您必须再次删除.pack(),并可以在新行中写入价格:

def myClick():
    ...
    label1 = Label(root, text=str(price))
    label1.grid(row=1, column=0)
    ...
另一个呢

def myClick2():
    ...
    label2 = Label(root, text=str(price))
    label2.grid(row=1, column=1)
    ...

您可以通过卸下包装将它们相邻放置

myButton = Button(root, text="Bitcoinn ", padx=50, pady=50, bg="black", fg="red")
myButton.grid(row=0, column=0)
myButton2 = Button(root, text="Ethereum", padx=50, pady=50,bg="gold", fg="green")
myButton2.grid(row=0, column=1)
root.mainloop()

我已经更新了我的问题,我可以通过添加一个空格来修正按钮大小,并通过这种方式使两个单词的长度相同,这导致了相同大小的按钮,但是我尝试使用
minsize
使它们彼此相邻,但这并不保证列的大小相同,只是它们具有相同的最小大小。如果其中一个按钮大于minsize,则会导致该列增长。确保两列或多列大小相同的正确选项是使用
uniform
选项。当您在行尾直接使用pack()时,myButton对象不会设置为Button构造函数的返回值,而是设置为pack()的返回值所以它不是一个按钮对象。它将它放在每个othr旁边,但是当我单击按钮时,价格应该显示在按钮下面:Traceback(最近一次调用):File“/home/ether/anaconda3/lib/python3.7/tkinter/u init_uuuuuuuuuuuuuuuuu.py”,第1705行,在call return self.func(*args)File“Button.py”中,第23行,在My2 clickout=Label中(root,text=str(price)).pack()文件“/home/ether/anaconda3/lib/python3.7/tkinter/_init__.py”,第2143行,在pack\u configure+self.\u options(cnf,kw))\u tkinter.TclError:无法在内部使用几何管理器包。它已经有了Grid管理的从属服务器我想要这样,但是btc价格低于btc按钮,以太坊价格低于eth按钮你能给我们展示一下你的myClick功能吗?这是密码。我想有btc按钮左和eth按钮右,当点击htem价格应显示在按钮下方,btc为btc和eth为Ethan这是我目前拥有的