tkinter按钮的高度和宽度

时间:2013-11-15 15:34:41

标签: python button tkinter

我正在尝试使用下面的代码创建一个按钮并更改高度和宽度,但实际按钮不会在物理上显示。但是,如果您将鼠标悬停在它应该是的区域上并单击它将打开新窗口。有什么想法吗?

import sys
from tkinter import *

#main menu
def mmWindow():
    mmWindow=Tk()
    mmWindow.geometry('600x600')


#first window   
mWindow= Tk()
mWindow.geometry('1920x1080+0+0')
mWindow.title('DMX512 Controller')

wtitle = Label (mWindow, text = "Pi DMX", fg = 'blue')
wtitle.place(x = 640, y = 100)

#main menu button
mmbutton = Button (mWindow, text = "Main Menu",command = mmWindow)
mmbutton.place( x=200, y = 200)
mmbutton.config(width=200, height=200)

2 个答案:

答案 0 :(得分:4)

关于您的初始问题:按钮按物理显示。问题是,由于它太大,很难与窗口的其余部分区分开来。

现在,你说你的最终目标是改变按钮的大小。如果是这样,那么您就走在了正确的轨道上:您使用了heightwidth选项。

但是,我建议您对代码进行一些更改:

  1. 不要让按钮太大。即使是在一个非常大的显示器上,按下那个尺寸的按钮也有点过分。
  2. 不要让窗户如此巨大。没有人想要一个占据整个屏幕的应用程序。
  3. 使用.grid代替.place。这样做可以让您更轻松地将小部​​件放在您想要的位置。
  4. 在您创建按钮时设置heightwidth选项,而不是在此之后。
  5. 此处无需导入sys。只导入你需要的东西。
  6. 不要像这样导入:from tkinter import *。这样做会在全局命名空间中转储一大堆名称,这些名称很容易被覆盖。
  7. 以下是我的脚本版本:

    import tkinter as tk
    
    def mmWindow():
        mmWindow = tk.Tk()
        mmWindow.geometry('600x600')
    
    mWindow = tk.Tk()
    # You can set any size you want
    mWindow.geometry('500x500+0+0')
    mWindow.title('DMX512 Controller')
    
    wtitle = tk.Label(mWindow, text="Pi DMX", fg='blue')
    wtitle.grid(row=0, column=1)
    
    # You can set any height and width you want
    mmbutton = tk.Button(mWindow, height=5, width=20, text="Main Menu", command=mmWindow)
    mmbutton.grid(row=1, column=1)
    
    mWindow.mainloop()
    

答案 1 :(得分:1)

import sys
from tkinter import *

def update_window_size():
    mmWindow.geometry('600x600')

mmWindow  = Tk()
mmWindow .geometry('1920x1080+0+0')
mmWindow .title('DMX512 Controller')

wtitle = Label(mmWindow, text="Pi DMX", fg='blue')
wtitle.place(relx=0.33, rely=0.0925925)

mmbutton = Button(mmWindow, text="Main Menu", command=update_window_size)
mmbutton.place(relw=0.104167, relh=0.185185, relx=0.104167, rely=0.185185)

mmWindow.mainloop()

我知道这已经晚了,但只想添加我如何解决如何更改按钮大小的问题的方法。我相信将 place 与 relw 和 relh 一起使用将是更好的方法。 relw 和 relh 和 relx 和依赖将是父小部件的高度和宽度的一部分。因此,您无需担心调整 wtitle 和 mmbutton 的大小。

如果你想改变它的宽度和高度,那么只需将下面的代码放在按钮命令上。

def update_button_size():
    mmbutton.place(width=20, height=20)

mmbutton = Button(mmWindow, text="Main Menu", command=update_button_size)
mmbutton.place(width=400, height=400, relx=0.104167, rely=0.185185)

如果您想从配置中更改它的宽度和高度,请使用下面的代码。

def update_button_size():
    mmbutton.config(width=20, height=20)

mmbutton = Button(mmWindow, text="Main Menu", command=update_button_size)
mmbutton.place(relx=0.104167, rely=0.185185)
mmbutton.config(width=400, height=400)

根据我的理解,配置宽度和高度与地方宽度和高度不同。