Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我可以更改tkinter按钮的宽度,但不能更改高度_Python_Tkinter - Fatal编程技术网

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

Python 我可以更改tkinter按钮的宽度,但不能更改高度,python,tkinter,Python,Tkinter,我正在用Tkinter做一个简单的游戏,我有按钮可以通过放置和忘记适当的框架转到下一页和最后一页。在\uuuu init\uuuu的第三行和第五行中,我定义了按钮,我可以使用width=来更改按钮的宽度(虽然它没有出现在下面的代码中),但是当我使用height=来更改按钮的高度时,不会发生任何事情。如果你知道原因,请告诉我。代码中没有bug,因此应该按原样运行。我正在使用Python 3.3.4。多谢各位 from tkinter import * import math master=Tk()

我正在用Tkinter做一个简单的游戏,我有按钮可以通过放置和忘记适当的框架转到下一页和最后一页。在
\uuuu init\uuuu
的第三行和第五行中,我定义了按钮,我可以使用
width=
来更改按钮的宽度(虽然它没有出现在下面的代码中),但是当我使用
height=
来更改按钮的高度时,不会发生任何事情。如果你知道原因,请告诉我。代码中没有bug,因此应该按原样运行。我正在使用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)
从tkinter导入*
输入数学
master=Tk()
类makeframe(对象):
定义初始化(self,i):
self.i=i
self.frame=帧(主)
self.nextbutton=按钮(self.frame,text='next\n>>',command=self.next,state=DISABLED,height=2)
self.nextbutton.grid(列=100,行=0,行跨度=100)

self.backbutton=按钮(self.frame,text='last\n根据您在问题评论中的回答,问题是您正在OSX上运行代码。该操作系统不允许您更改按钮的高度。苹果对允许应用程序偏离其风格准则的要求更严格。

这很奇怪。我用c/p这段代码并用两个按钮运行它不同的高度值和按钮的高度发生了更改。您确定没有丢失或更改任何内容吗?正确,感谢您的检查。为了更好地测量,我将此代码复制并粘贴到一个新的.py中,然后运行它,同样的情况也会发生。但是,如果我将高度设置为20,按钮的高度不会更改,但row(行的跨度)按钮所在的位置确实会改变高度。您在哪个平台上运行此操作?由于本机小部件的限制,Mac上的灵活性要小得多。我在OSX上运行—我想可能就是这样。不过,我可以更改宽度但不能更改高度,这似乎很奇怪。无论如何,感谢您的回复。我运行了您的代码。高度在中正常工作ubuntu 14.04和python 3.4.1。