gpt4 book ai didi

Python Tkinter : unknown option "-height". 无法更改按钮的大小

转载 作者:行者123 更新时间:2023-12-01 07:20:27 25 4
gpt4 key购买 nike

我正在尝试使用 tkinter 制作一个简单的程序。

我试图更改字体或宽度或高度的样式。宽度可以改变,但当涉及到高度或字体时 - 它显示错误。我在想——也许是因为布局的原因?(改变宽度的按钮位于def initUI的底部)

如果有人也可以回答这个问题:我将 1 帧设为红色,因为那里会出现错误消息,但有人知道如何使这个红色的宽度更小吗?

谢谢

from tkinter import *
from tkinter.ttk import *


class Example(Frame):

def __init__(self,master):
super().__init__()

master.minsize(width=350, height=160)
master.maxsize(width=650, height=500)

self.initUI()


def initUI(self):

self.master.title("Hank (version 3)")
self.pack(fill=BOTH, expand=True)

frame1 = Frame(self)
frame1.pack(fill=X)

#dataset
lbl1 = Label(frame1, text="Dataset file_name", width=18)
lbl1.pack(side=LEFT, padx=5, pady=5)

entryDataset= Entry(frame1)
entryDataset.pack(fill=X, padx=5, expand=True)

#row col begin
frame2 = Frame(self)
frame2.pack(fill=X)

lblRow = Label(frame2, text="Row", width=6)
lblRow.pack(side=LEFT, padx=5, pady=5)
entryRow = Entry(frame2, width=5)
entryRow.pack(side=LEFT, padx=0, expand=True)

lblCol = Label(frame2, text="Column", width=7.5)
lblCol.pack(side=LEFT, padx=5, pady=5)
entryCol = Entry(frame2, width=5)
entryCol.pack(side=LEFT, padx=5, expand=True)

lblBegin = Label(frame2, text="Start at", width=6)
lblBegin.pack(side=LEFT, padx=5, pady=5)
entryBegin = Entry(frame2, width=5)
entryBegin.pack(side=LEFT, padx=0, expand=True)

#console window
s = Style()
s.configure('My.TFrame', background='grey')

frame3 = Frame(self, style='My.TFrame')
frame3.pack(fill=BOTH, expand=True)

#button start and help
s = Style()
s.configure('My.ConsoleFrame', background='red')

frame4 = Frame(self)
frame4.pack(fill=BOTH, expand=True)

startbutton = Button(frame4, text="Start Clustering", height="100", width="100")
startbutton.pack(side=RIGHT, padx=5, pady=5)


def main():

root = Tk()
root.geometry("300x160+300+160")
app = Example(root)
root.mainloop()


if __name__ == '__main__':
main()

最佳答案

这是全局进口不佳的最好例子之一。您在顶部写下:

from tkinter import *
from tkinter.ttk import *

这意味着您将 tkintertkinter.ttk 中的所有内容导入到 main.py 命名空间中。然后你写例如:

frame3 = Frame(self, bg="grey")
....
lblCol = Label(frame2, text="Column", width=7)

这些是框架/标签对象,但是哪些? tkinter 中的还是 tkinter.ttk 中的?如果是第一个,则必须使用 -height 设置高度,否则必须使用 tkinter.ttk.Style()。与框架的 -bg 相同。

解决方案:

import tkinter as tk


class Example(tk.Frame):

def __init__(self,master):
super().__init__()

master.minsize(width=350, height=160)
master.maxsize(width=650, height=500)

self.initUI()


def initUI(self):

self.master.title("Hank (version 3)")
self.pack(fill=tk.BOTH, expand=True)

frame1 = tk.Frame(self)
frame1.pack(fill=tk.X)

#dataset
lbl1 = tk.Label(frame1, text="Dataset file_name", width=18)
lbl1.pack(side=tk.LEFT, padx=5, pady=5)

entryDataset= tk.Entry(frame1)
entryDataset.pack(fill=tk.X, padx=5, expand=True)

#row col begin
frame2 = tk.Frame(self)
frame2.pack(fill=tk.X)

lblRow = tk.Label(frame2, text="Row", width=6)
lblRow.pack(side=tk.LEFT, padx=5, pady=5)
entryRow = tk.Entry(frame2, width=5)
entryRow.pack(side=tk.LEFT, padx=0, expand=True)

lblCol = tk.Label(frame2, text="Column", width=7)
lblCol.pack(side=tk.LEFT, padx=5, pady=5)
entryCol = tk.Entry(frame2, width=5)
entryCol.pack(side=tk.LEFT, padx=5, expand=True)

lblBegin = tk.Label(frame2, text="Start at", width=6)
lblBegin.pack(side=tk.LEFT, padx=5, pady=5)
entryBegin = tk.Entry(frame2, width=5)
entryBegin.pack(side=tk.LEFT, padx=0, expand=True)

frame3 = tk.Frame(self, bg="grey")
frame3.pack(fill=tk.BOTH, expand=True)

frame4 = tk.Frame(self)
frame4.pack(fill=tk.BOTH, expand=True)

startbutton = tk.Button(frame4, text="Start Clustering", height="100", width="100")
startbutton.pack(side=tk.RIGHT, padx=5, pady=5)


def main():

root = tk.Tk()
root.geometry("300x160+300+160")
app = Example(root)
root.mainloop()


if __name__ == '__main__':
main()

我在这里使用 tkinter 小部件完成了此操作。显然,您可以 import tkinter.ttk as ttk 并使用它们重写代码,这只是一个品味问题。

关于Python Tkinter : unknown option "-height". 无法更改按钮的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57726189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com