gpt4 book ai didi

python - 配置独立的小部件(Tkinter ttk、Python)

转载 作者:行者123 更新时间:2023-11-30 23:24:12 25 4
gpt4 key购买 nike

总的来说,我对编程还很陌生,所以对任何愚蠢的行为表示歉意。

我用 python 和 Tkinter 制作了这个程序,用于计算电子设备中不同单位的电容器。程序如下:

from tkinter import *
from tkinter import ttk

def calculate(*args):
try:
valuex=int(x.get())
valuey=int(y.get())
valuez=int(z.get())
cappf.set(int(str(valuex)+str(valuey))*10**valuez)
capnf.set(int(str(valuex)+str(valuey))*10**valuez*10**-3)
capuf.set(int(str(valuex)+str(valuey))*10**valuez*10**-6)
except ValueError:
pass

root=Tk()
root.title('Capacitor Calculator')
mainframe=ttk.Frame(root, padding='10 10 10 10')
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)

x=StringVar()
x_entry=ttk.Entry(mainframe, width=3, textvariable=x)
x_entry.grid(column=1, row=2, sticky=(W,E))
y=StringVar()
y_entry=ttk.Entry(mainframe, width=3, textvariable=y)
y_entry.grid(column=1, row=3, sticky=(W,E))
z=StringVar()
z_entry=ttk.Entry(mainframe, width=3, textvariable=z)
z_entry.grid(column=1, row=4, sticky=(W,E))
cappf=StringVar()
capnf=StringVar()
capuf=StringVar()

ttk.Button(mainframe, width=7, text='Calculate', command=calculate).grid(column=2, row=5, sticky=(N, E, W, S))
ttk.Label(mainframe, textvariable=cappf).grid(column=2, row=2, sticky=N)
ttk.Label(mainframe, textvariable=capnf).grid(column=2, row=3, sticky=N)
ttk.Label(mainframe, textvariable=capuf).grid(column=2, row=4, sticky=N)
ttk.Label(mainframe, text='Input:').grid(column=1, row=1, sticky=N)
ttk.Label(mainframe, text='Amount:').grid(column=2, row=1, sticky=N)
ttk.Label(mainframe, text='Units:').grid(column=3, row=1, sticky=N)
ttk.Label(mainframe, text='pf').grid(column=3, row=2, sticky=N)
ttk.Label(mainframe, text='nf').grid(column=3, row=3, sticky=N)
ttk.Label(mainframe, text='uf').grid(column=3, row=4, sticky=N)
ttk.Button(mainframe, text='Quit', command=root.destroy).grid(column=2, row=6, sticky=(N, E, S, W))

ttk.Style().configure('TLabel', padding=6, font='Corbel 16', foreground='#0077AF')
ttk.Style().configure("TButton", padding=6, relief="flat", font='Corbel 18', foreground='#00AA11')

for child in mainframe.winfo_children(): child.grid_configure(padx=5, pady=3)
x_entry.focus()
y_entry.focus()
z_entry.focus()
root.bind('<Return>', calculate)

root.mainloop()

在 Py 3.4.0 shell 中运行它,它工作正常。

我的问题是:我该怎么做/如何使“退出”按钮显示红色字体?现在,底部附近的“ttk.Style()”部分会影响所有按钮,以相同的方式配置它们;我在网上查看过,但找不到有效的解决方案,或者至少找不到我正确应用的解决方案。

谢谢

扎克

最佳答案

你需要做两件事:

  1. 创建一个新的 tkinter.ttk.Style对于将 foreground 选项设置为红色的按钮。

  2. 指定按钮的 style可以选择这种风格。

以下是脚本的固定版本:

from tkinter import *
from tkinter import ttk

def calculate(*args):
try:
valuex=int(x.get())
valuey=int(y.get())
valuez=int(z.get())
cappf.set(int(str(valuex)+str(valuey))*10**valuez)
capnf.set(int(str(valuex)+str(valuey))*10**valuez*10**-3)
capuf.set(int(str(valuex)+str(valuey))*10**valuez*10**-6)
except ValueError:
pass

root=Tk()
root.title('Capacitor Calculator')
mainframe=ttk.Frame(root, padding='10 10 10 10')
mainframe.grid(column=0, row=0, sticky=(N, W, E, S))
mainframe.columnconfigure(0, weight=1)
mainframe.rowconfigure(0, weight=1)

x=StringVar()
x_entry=ttk.Entry(mainframe, width=3, textvariable=x)
x_entry.grid(column=1, row=2, sticky=(W,E))
y=StringVar()
y_entry=ttk.Entry(mainframe, width=3, textvariable=y)
y_entry.grid(column=1, row=3, sticky=(W,E))
z=StringVar()
z_entry=ttk.Entry(mainframe, width=3, textvariable=z)
z_entry.grid(column=1, row=4, sticky=(W,E))
cappf=StringVar()
capnf=StringVar()
capuf=StringVar()

ttk.Button(mainframe, width=7, text='Calculate', command=calculate).grid(column=2, row=5, sticky=(N, E, W, S))
ttk.Label(mainframe, textvariable=cappf).grid(column=2, row=2, sticky=N)
ttk.Label(mainframe, textvariable=capnf).grid(column=2, row=3, sticky=N)
ttk.Label(mainframe, textvariable=capuf).grid(column=2, row=4, sticky=N)
ttk.Label(mainframe, text='Input:').grid(column=1, row=1, sticky=N)
ttk.Label(mainframe, text='Amount:').grid(column=2, row=1, sticky=N)
ttk.Label(mainframe, text='Units:').grid(column=3, row=1, sticky=N)
ttk.Label(mainframe, text='pf').grid(column=3, row=2, sticky=N)
ttk.Label(mainframe, text='nf').grid(column=3, row=3, sticky=N)
ttk.Label(mainframe, text='uf').grid(column=3, row=4, sticky=N)
##########################################################################################################################
ttk.Button(mainframe, text='Quit', style='red.TButton', command=root.destroy).grid(column=2, row=6, sticky=(N, E, S, W))

ttk.Style().configure('red.TButton', foreground='red', padding=6, font='Corbel 16')
##########################################################################################################################
ttk.Style().configure('TLabel', padding=6, font='Corbel 16', foreground='#0077AF')
ttk.Style().configure("TButton", padding=6, relief="flat", font='Corbel 18', foreground='#00AA11')

for child in mainframe.winfo_children(): child.grid_configure(padx=5, pady=3)
x_entry.focus()
y_entry.focus()
z_entry.focus()
root.bind('<Return>', calculate)

root.mainloop()

我更改的内容在评论框中。

关于python - 配置独立的小部件(Tkinter ttk、Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23580641/

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