- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我创建的以下应用程序用于在 tkinter 中演示多个窗口。主要问题是没有任何 Entry
控件,无论是在 bmi 计算器还是转换器中,都接受输入框中的值 - 当我这样做时,它们会得到一个 ValueError
一个计算。
from tkinter import *
from tkinter import ttk
from tkinter import messagebox
class App1(ttk.Frame):
def createWidgets(self):
#text variables
self.i_height = StringVar()
self.i_weight = StringVar()
self.o_bmi = StringVar()
#labels
self.label1 = ttk.Label(self, text="Enter your weight:").grid(row=0, column=0, sticky=W)
self.label2 = ttk.Label(self, text="Enter your height:").grid(row=1, column=0, sticky=W)
self.label3 = ttk.Label(self, text="Your BMI is:").grid(row=2, column=0, sticky=W)
#text boxes
self.textbox1 = ttk.Entry(self, textvariable=self.i_weight).grid(row=0, column=1, sticky=E)
self.textbox2 = ttk.Entry(self, textvariable=self.i_height).grid(row=1, column=1, sticky=E)
self.textbox3 = ttk.Entry(self, textvariable=self.o_bmi).grid(row=2, column=1, sticky=E)
#buttons
self.button1 = ttk.Button(self, text="Cancel/Quit", command=self.quit).grid(row=3, column=1, sticky=E)
self.button1 = ttk.Button(self, text="Ok", command=self.calculateBmi).grid(row=3, column=2, sticky=E)
def calculateBmi(self):
try:
self.weight = float(self.i_weight.get())
self.height = float(self.i_height.get())
self.bmi = self.weight / self.height ** 2.0
self.o_bmi.set(self.bmi)
except ValueError:
messagebox.showinfo("Error", "You can only use numbers.")
finally:
self.i_weight.set("")
self.i_height.set("")
def __init__(self, master=None):
ttk.Frame.__init__(self, master)
self.grid()
self.createWidgets()
class App2(ttk.Frame):
def create_widgets(self):
"""Create the widgets for the GUI"""
#1 textbox (stringvar)
self.entry= StringVar()
self.textBox1= ttk.Entry(self, textvariable=self.entry).grid(row=0, column=1)
#5 labels (3 static, 1 stringvar)
self.displayLabel1 = ttk.Label(self, text="feet").grid(row=0, column=2, sticky=W)
self.displayLabel2 = ttk.Label(self, text="is equivalent to:").grid(row=1, column=0)
self.result= StringVar()
self.displayLabel3 = ttk.Label(self, textvariable=self.result).grid(row=1, column=1)
self.displayLabel4 = ttk.Label(self, text="meters").grid(row=1, column=2, sticky=W)
#2 buttons
self.quitButton = ttk.Button(self, text="Quit", command=self.quit).grid(row=2, column=1, sticky=(S,E))
self.calculateButton = ttk.Button(self, text="Calculate", command=self.convert_feet_to_meters).grid(row=2, column=2, sticky=(S,E))
def convert_feet_to_meters(self):
"""Converts feet to meters, uses string vars and converts them to floats"""
self.measurement = float(self.entry.get())
self.meters = self.measurement * 0.3048
self.result.set(self.meters)
def __init__(self, master=None):
ttk.Frame.__init__(self, master)
self.grid()
self.create_widgets()
def button1_click():
root = Tk()
app = App1(master=root)
app.mainloop()
def button2_click():
root = Tk()
app = App2(master=root)
app.mainloop()
def main():
window = Tk()
button1 = ttk.Button(window, text="bmi calc", command=button1_click).grid(row=0, column=1)
button2 = ttk.Button(window, text="feet conv", command=button2_click).grid(row=1, column=1)
window.mainloop()
if __name__ == '__main__':
main()
如何解决这个问题,但仍然保持类结构和 python3 的使用?顺便说一句 - 是否与 C# 的 form1.Show()
类似?
最佳答案
您必须将 StringVar()
转换为整数/ float 或使用 IntVar()
或 DoubleVar()
还有其他问题。像下面这样的语句返回“None”,因为它是一个 grid()
对象而不是一个 Label()
对象:
self.label1 = ttk.Label(self, text="Enter your weight:").grid(row=0, column=0, sticky=W)
我想你也会遇到同时打开两个 Tk()
窗口的问题。请改用 Toplevel()
或单独的框架。
关于python - ttk tkinter 多帧/窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6035101/
我正在使用的 tkinter 版本正在访问 tk.TclVersion=8.6。 我可以从 ttk.Style() 访问 stylename='TSpinbox'。 Stylename = TSpin
是否可以配置具有透明背景的 tkinter 或 ttk 小部件(Label、Entry、Text)以便放置它们在具有自定义背景颜色的容器中或在 Canvas 图形或图像之上? 我也在寻找一种方法来更改
我需要为按钮小部件创建一个自定义样式,它与使用 ttk 'clam' 主题的按钮具有相同的外观。 我可以这样设置主题: s = ttk.Style() s.theme_use('clam') 但是,鉴
最近开始使用 ttk 来改善我的 GUI 外观,但我在编辑 ttk.OptionMenu 样式时遇到了困难。正如我所理解的,下面的代码应该改变所有单选按钮和选项菜单的背景。对于 Radiobutton
除了已记录的类之外,ttk.Spinbox 类和 tk.Spinbox 类之间有什么区别? 我发现了一些差异,例如: ttk.Spinbox 在按下箭头后设置为 0,而 tk.Spinbox 则不会。
我正在使用主要使用 C 和 C++ 构建的遗留(桌面风格,现在已知)Windows 应用程序。当此应用程序在触摸屏 Windows 笔记本电脑上运行时,我需要在用户点击对话框屏幕上的输入框时自动显示触
我在使用 ttk.Notebook 和 grid 布局管理器布局两个相同的 ttk.Treeview 小部件时遇到问题。当我仅使用一个 TreeView (放置在标签框架中、放置在框架(部分)中、放置
有人可以解释一下为什么entry.select_range()适用于Button,但不适用于ttk.Button吗? from tkinter import * from tkinter import
考虑这个简单的代码: from tkinter import * from tkinter.ttk import * root= Tk() ttk.Label(root, text='Heading
我正在尝试在我的程序中加入可自定义的主题选择。我一直在引用这个指南:http://infohost.nmt.edu/tcc/help/pubs/tkinter/web/ttk-themes.html
考虑这个简单的代码: from Tkinter import * import ttk root= Tk() ttk.Label(root, text='Heading Here').grid(row
当我更改图像的前景色时,包含位图图像的 ttk 标签无法正常工作。只有 ttk 标签有这个问题。 Tkinter 标签正常工作。 代码如下: import tkinter as tk import t
我有一排包含 ttk.Combobox 的小部件,当我勾选该行末尾的复选框时,我想更改该行中小部件的背景颜色。对于 tkinter,只需使用配置就很简单,但是对于 ttk,您必须使用一个主题,该主题似
这是我的代码 from Tkinter import * import ttk, tkMessageBox import os font = ("Avenir", 24) b = ttk.Style(
我想制作一个简单的弹出消息,当鼠标进入选项时显示以图标表示的选项名称,并在鼠标离开时隐藏。 这些图标是按钮内的图像,我已经能够在使用菜单小部件输入按钮时显示消息,但是当鼠标离开按钮时,它不会取消发布,
import tkinter from tkinter import ttk def main(): root = tkinter.Tk() numpad = NumPad(root)
我正在尝试使用这个问题 (Tk treeview column sort) 的答案中说明的 ttk.Treeview 排序函数,它适用于像“abc”、“bcd”、“cde”等字符串,但是当我尝试对数字
我有一个处于“禁用”状态的 ttk 条目。禁用时输入字段的背景颜色为浅蓝色。我怎样才能将它更改为默认的灰色?从这篇文章中,我了解了如何更改前景色。 tkinter ttk Entry widget -
使用ttk标签,可以指定根据标签状态显示的多个图像。但我无法让它发挥作用。这是代码。 from tkinter import * from tkinter.ttk import * BITMAP0 =
Python ttk gui 的创建很容易,并且大部分具有原生的外观和感觉 (win7)。不过,我遇到了一个小问题: 我想要一个看起来像 ttk.LabelFrame 但没有标签的框架。仅仅省略文本选
我是一名优秀的程序员,十分优秀!