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

时间:2014-06-12 21:35:14

标签: python 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='next\n>>',command=self.next,state=DISABLED,height=2)
        self.nextbutton.grid(column=100,row=0,rowspan=100)
        self.backbutton=Button(self.frame,text='last\n<<',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)

1 个答案:

答案 0 :(得分:1)

根据您在问题评论中的答案,问题是您在OSX上运行代码。该操作系统不允许您更改按钮的高度。 Apple更严格地允许应用程序偏离其样式指南。