如何在 pygubu 中获取 tkinter 条目小部件值?
how can I getting tkinter entry widget value in pygubu?
我在 pygubu 中使用 tkinter。我想获得 Entry_1 小部件的价值。
Entry_1 小部件值为蓝色。 Entry_1 的文本变量是 'text_1'
我阅读了 pygubu 文档。但我不明白。
谁能简单认识我
和我 Link ask.ui 文件来使用 pygubu
http://www.joinsland114.mireene.com/data/ask.ui
try:
import tkinter as tk # for python 3
except:
import Tkinter as tk # for python 2
import pygubu
from tkinter import *
class Application:
def __init__(self, master):
#1: Create a builder
self.builder = builder = pygubu.Builder()
#2: Load an ui file
builder.add_from_file('ask.ui')
#3: Create the widget using a master as parent
self.mainwindow = builder.get_object('Frame_1', master)
builder.connect_callbacks(self)
root = tk.Tk()
app = Application(root)
print(app.mainwindow.getvar('text_1'))
root.mainloop()
Traceback (most recent call last): File "C:\Python34\pygubu.py", line
25, in
print(app.mainwindow.getvar('text_1')) File "C:\Python34\lib\tkinter__init__.py", line 454, in getvar
return self.tk.getvar(name)
_tkinter.TclError: can't read "text_1": no such variable
使用 pygubu-designer 打开你的 ask.ui 文件,然后展开 Frame_2 并点击 Entry_1。在下面的部分中,在“常规”选项卡下,您会看到 textvariable 是空的。在此字段中输入:entry1_var。
对于 Entry_2 在 textvariable 字段中输入:entry2_var 对于 Entry_3 输入在 textvariable 字段中:entry3_var。
为了让点击确定按钮打印到控制台打印蓝色、黄色和绿色的 3 个变量值,然后:Select Button_1 并在其 命令中 字段输入:button1_callback.
在主菜单栏上,单击文件并保存 ask.ui 文件。
如果您现在浏览一下 ask.ui 文件的内容,则会向其中添加以下四行...
<property name="textvariable">string:entry1_var</property>
<property name="textvariable">string:entry2_var</property>
<property name="textvariable">string:entry3_var</property>
<property name="command">button1_callback</property>
以下方法现已添加到 ask.py 文件中:
def button1_callback(self):
"Display the values of the 3 x Entry widget variables"
print(self.builder.tkvariables['entry1_var'].get())
print(self.builder.tkvariables['entry2_var'].get())
print(self.builder.tkvariables['entry3_var'].get())
# Change Entry_3 from green to red
self.builder.tkvariables['entry3_var'].set("red"))
同时删除或注释掉行 #print(app.mainwindow.getvar('text_1'))
您的 ask.py 文件现在应该如下所示...
try:
import tkinter as tk # for python 3
except:
import Tkinter as tk # for python 2
import pygubu
from tkinter import *
class Application:
def __init__(self, master):
#1: Create a builder
self.builder = builder = pygubu.Builder()
#2: Load an ui file
builder.add_from_file('ask.ui')
#3: Create the widget using a master as parent
self.mainwindow = builder.get_object('Frame_1', master)
builder.connect_callbacks(self)
def button1_callback(self):
"Display the values of the 3 x Entry widget variables"
print(self.builder.tkvariables['entry1_var'].get())
print(self.builder.tkvariables['entry2_var'].get())
print(self.builder.tkvariables['entry3_var'].get())
# Change Entry_3 from green to red
self.builder.tkvariables['entry3_var'].set("red")
root = tk.Tk()
app = Application(root)
#print(app.mainwindow.getvar('text_1')) <-- This is commented out
root.mainloop()
运行 您的 python 程序,然后单击“确定”按钮。控制台将显示:
$ python3 ask.py
blue
yellow
green
第三个条目小部件将从显示 绿色 更改为 红色。
我在 pygubu 中使用 tkinter。我想获得 Entry_1 小部件的价值。 Entry_1 小部件值为蓝色。 Entry_1 的文本变量是 'text_1' 我阅读了 pygubu 文档。但我不明白。 谁能简单认识我
和我 Link ask.ui 文件来使用 pygubu http://www.joinsland114.mireene.com/data/ask.ui
try:
import tkinter as tk # for python 3
except:
import Tkinter as tk # for python 2
import pygubu
from tkinter import *
class Application:
def __init__(self, master):
#1: Create a builder
self.builder = builder = pygubu.Builder()
#2: Load an ui file
builder.add_from_file('ask.ui')
#3: Create the widget using a master as parent
self.mainwindow = builder.get_object('Frame_1', master)
builder.connect_callbacks(self)
root = tk.Tk()
app = Application(root)
print(app.mainwindow.getvar('text_1'))
root.mainloop()
Traceback (most recent call last): File "C:\Python34\pygubu.py", line 25, in print(app.mainwindow.getvar('text_1')) File "C:\Python34\lib\tkinter__init__.py", line 454, in getvar return self.tk.getvar(name) _tkinter.TclError: can't read "text_1": no such variable
使用 pygubu-designer 打开你的 ask.ui 文件,然后展开 Frame_2 并点击 Entry_1。在下面的部分中,在“常规”选项卡下,您会看到 textvariable 是空的。在此字段中输入:entry1_var。
对于 Entry_2 在 textvariable 字段中输入:entry2_var 对于 Entry_3 输入在 textvariable 字段中:entry3_var。
为了让点击确定按钮打印到控制台打印蓝色、黄色和绿色的 3 个变量值,然后:Select Button_1 并在其 命令中 字段输入:button1_callback.
在主菜单栏上,单击文件并保存 ask.ui 文件。
如果您现在浏览一下 ask.ui 文件的内容,则会向其中添加以下四行...
<property name="textvariable">string:entry1_var</property>
<property name="textvariable">string:entry2_var</property>
<property name="textvariable">string:entry3_var</property>
<property name="command">button1_callback</property>
以下方法现已添加到 ask.py 文件中:
def button1_callback(self):
"Display the values of the 3 x Entry widget variables"
print(self.builder.tkvariables['entry1_var'].get())
print(self.builder.tkvariables['entry2_var'].get())
print(self.builder.tkvariables['entry3_var'].get())
# Change Entry_3 from green to red
self.builder.tkvariables['entry3_var'].set("red"))
同时删除或注释掉行 #print(app.mainwindow.getvar('text_1'))
您的 ask.py 文件现在应该如下所示...
try:
import tkinter as tk # for python 3
except:
import Tkinter as tk # for python 2
import pygubu
from tkinter import *
class Application:
def __init__(self, master):
#1: Create a builder
self.builder = builder = pygubu.Builder()
#2: Load an ui file
builder.add_from_file('ask.ui')
#3: Create the widget using a master as parent
self.mainwindow = builder.get_object('Frame_1', master)
builder.connect_callbacks(self)
def button1_callback(self):
"Display the values of the 3 x Entry widget variables"
print(self.builder.tkvariables['entry1_var'].get())
print(self.builder.tkvariables['entry2_var'].get())
print(self.builder.tkvariables['entry3_var'].get())
# Change Entry_3 from green to red
self.builder.tkvariables['entry3_var'].set("red")
root = tk.Tk()
app = Application(root)
#print(app.mainwindow.getvar('text_1')) <-- This is commented out
root.mainloop()
运行 您的 python 程序,然后单击“确定”按钮。控制台将显示:
$ python3 ask.py
blue
yellow
green
第三个条目小部件将从显示 绿色 更改为 红色。