我可以改变tkinter按钮的宽度,但不能改变高度



我正在用Tkinter制作一款简单的游戏,我有按钮可以通过放置和忘记适当的帧来转到下一个和最后一个"页面"。在__init__的第三和第五行,我定义了按钮,我可以使用width=来改变按钮的宽度(虽然它没有出现在下面的代码中),但是当我使用height=来改变按钮的高度时,什么也不会发生。如果你知道这是为什么,请告诉我。代码中没有错误,所以它应该按原样运行。我使用Python 3.3.4。谢谢你。

from tkinter import *
import math
master=Tk()
class makeframe(object):
    def __init__(self,i):
        self.i=i
        self.frame=Frame(master)
        self.nextbutton=Button(self.frame,text='nextn>>',command=self.next,state=DISABLED,height=2)
        self.nextbutton.grid(column=100,row=0,rowspan=100)
        self.backbutton=Button(self.frame,text='lastn<<',command=self.back,height=2)
        self.backbutton.grid(column=0,row=0,rowspan=10)
    def next(self):
        self.frame.grid_forget()
        p[self.i+1].frame.grid()
    def back(self):
        self.frame.grid_forget()
        p[self.i-1].frame.grid()
    def allownext(self):
        self.nextbutton.config(state=ACTIVE)
    def disablenext(self):
        self.nextbutton.config(state=DISABLED)
def rounds(i):
    number=round(4+i*(5-p[0].numberofplayers.get()))
    return(number)
n=7
p=[0]*n
f=[0]*n
for j in range(n):
    p[j]=makeframe(j)
    f[j]=p[j].frame
# 0 0 0 0 0 0 0 0 0 0 0
def after_numberofplayers():
    p[0].numberofturns.set(0)
    for i in range(4):
        p[0].numberofturnsbutton[i].config(text='%i'%rounds(i),value=rounds(i),state=ACTIVE)
        p[0].disablenext()
p[0].numerofplayerslabel=Label(f[0],text='Please select the number of players.')
p[0].numerofplayerslabel.grid(column=1,columnspan=4,row=0)
p[0].numberofplayers=IntVar()
p[0].numberofplayers.set(0)
p[0].numberofplayersbutton={}
p[0].numerofturnslabel=Label(f[0],text='Please select the number of rounds.')
p[0].numerofturnslabel.grid(column=1,columnspan=4,row=2)
p[0].numberofturns=IntVar()
p[0].numberofturns.set(0)
p[0].numberofturnsbutton={}
for i in range(4):
    p[0].numberofplayersbutton[i]=Radiobutton(f[0],text='%i' %(i+1),variable=p[0].numberofplayers,value=(i+1),command=after_numberofplayers,width=5)
    p[0].numberofplayersbutton[i].grid(row=1,column=i+1,sticky='w')
    p[0].numberofturnsbutton[i]=Radiobutton(f[0],text='%i' %rounds(i),variable=p[0].numberofturns,value=rounds(i),state=DISABLED,command=p[0].allownext,width=5)
    p[0].numberofturnsbutton[i].grid(row=3,column=i+1,sticky='w')
# 0 0 0 0 0 0 0 0 0 0 0 
p[0].frame.grid()
p[0].backbutton.config(state=DISABLED)

根据您在问题评论中的回答,问题是您在OSX上运行代码。那个操作系统不允许你改变按钮的高度。苹果在允许应用程序偏离其风格指南方面更为严格。

最新更新