【问题标题】:Python Tkinter buttonsPython Tkinter 按钮
【发布时间】:2015-03-31 13:58:54
【问题描述】:

我在我的代码中使用了多个按钮,它们是相互关联的。 我希望他们并肩, 我在这里检查过:Setting the position on a button in Python? 并尝试了该问题的解决方案,

但是,我使用 .pack 并且需要将其更改为网格? 这就是我所拥有的:

#import tKinter
import sys
from tkinter import *
def mhello():
    mlabel1 = Label(window,text = 'Hello we have to start / да започне').pack()
def mhello1():
    mlabel2 = Label(window,text = 'Hello we have to stop / да спре').pack()
def mhello2():
    mlabel3 = Label(window,text = 'Hello we have to add / да добавите').pack()    
#create new window
window = Tk()

#set window title
window.title("Изпитване програмата")
#set window size
window.geometry("700x200")

#menu start
def donothing():
   filewin = Toplevel(window)
   print("Welcome to my test program, XOXO Katherina") 
   mlabel5 = Label(window,text = 'Welcome to my test program, XOXO Katherina').pack()
def leave():
     sys.exit(0)

menubar = Menu(window)
filemenu = Menu(menubar, tearoff=0)
filemenu.add_command(label="Exit", command=window.destroy)
menubar.add_cascade(label="File", menu=filemenu)

helpmenu = Menu(menubar, tearoff=0)
helpmenu.add_command(label="About...", command=donothing)
menubar.add_cascade(label="Help", menu=helpmenu)

window.config(menu=menubar)
#menu ends 

#buttons here 
mlabel = Label(window,text = 'My label').pack()
mbutton = Button(window,text = 'Start',command = mhello, fg = 'black',bg = 'red', height = '3',width = '5',bd = '3').pack()
mbutton1 = Button(window,text = 'Stop',command = mhello1, fg = 'black',bg = 'red', height = '3',width = '5',bd = '3').pack()
mbutton2 = Button(window,text = 'Add',command = mhello2, fg = 'black',bg = 'red', height = '3',width = '5',bd = '3').pack()
#end buttons
#draw the window start application
window.mainloop()

也曾尝试将按钮更改为:

#buttons here 
mlabel = Label(window,text = 'My label').pack()
mbutton = Button(window,text = 'Start',command = mhello, fg = 'black',bg = 'red', height = '3',width = '5',bd = '3')
mbutton.grid(row=0, column=0)

mbutton1 = Button(window,text = 'Stop',command = mhello1, fg = 'black',bg = 'red', height = '3',width = '5',bd = '3')
mbutton1.grid(row=1, column=0)

mbutton2 = Button(window,text = 'Add',command = mhello2, fg = 'black',bg = 'red', height = '3',width = '5',bd = '3')
mbutton2.grid(row=2, column=0)
#end buttons 

【问题讨论】:

  • 这并不能回答您的问题,但您不应将小部件分配给变量并将 pack 分配给同一行。 grid 也一样。请参阅this post 了解更多信息。

标签: python tkinter


【解决方案1】:

使用 pack(side=LEFT)pack(side=RIGHT) 使用 pack 并排放置东西。

然而,一般来说,如果你在做这个项目之外的任何事情,那么学习使用 grid() 绝对是一个好主意。它有点复杂,但无需太多工作即可为放置提供更大的灵活性。关于如何使用它们以及它们之间的区别的一个很好的参考可以在this site.找到。

更新

如果您仍然停留在 pack() 上,那么将事情集中在同一行会有点棘手。没有直接的方法可以让它工作,最简单的解决方法是创建一些东西来填充侧面的空间,这样按钮就会被强制到中间。像这样的东西应该可以解决问题:

spacing1 = Label(root, text=" "*50).pack(side=LEFT)
button1 = Button(...)
button1.pack(side=Left)
spacing2 = Label(root, text=" "*50).pack(side=RIGHT)
button2 = Button(...)
button2.pack(side=RIGHT)

请注意,您必须通过反复试验确定正确的空格数才能使按钮居中显示。

【讨论】:

  • 这有帮助,但是我们可以让它们居中吗?
  • 另外,请务必记下上面 Kevin 的评论 - 它会在过去为我省去很多麻烦:P
  • 要使按钮居中,将它们放在另一个框架内,然后将其打包到顶部。然后该框架将居中,因此内部的按钮将居中。
  • 如果您不知道如何使用网格,我不会进入框架,但如果您可以实施,Bryan 的评论是更强大的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-21
  • 2017-07-23
  • 2020-06-19
  • 2013-04-11
  • 2021-07-04
  • 2012-12-02
  • 2016-09-11
相关资源
最近更新 更多