Python 3.x 如何在pygubu中获取tkinter条目小部件的值?

Python 3.x 如何在pygubu中获取tkinter条目小部件的值?,python-3.x,tkinter,pygubu,Python 3.x,Tkinter,Pygubu,我在pygubu使用tkinter。我想得到Entry_1小部件的值。 条目_1小部件值为蓝色。条目_1的textvariable为“text_1” 我读了pygubu文件。但我不明白。 谁能简单地认识我 我链接ask.ui文件以使用pygubu 回溯最近一次调用:文件C:\Python34\pygubu.py,第行 25,在 printapp.mainwindow.getvar'text_1'文件C:\Python34\lib\tkinter\uuuu init\uuuuuu.py,getv

我在pygubu使用tkinter。我想得到Entry_1小部件的值。 条目_1小部件值为蓝色。条目_1的textvariable为“text_1” 我读了pygubu文件。但我不明白。 谁能简单地认识我

我链接ask.ui文件以使用pygubu

回溯最近一次调用:文件C:\Python34\pygubu.py,第行 25,在 printapp.mainwindow.getvar'text_1'文件C:\Python34\lib\tkinter\uuuu init\uuuuuu.py,getvar中的第454行 返回self.tk.getvarname _tkinter.TclError:无法读取文本\u 1:没有此类变量


使用pygubu designer打开ask.ui文件,然后展开Frame_2并单击条目_1。在下面的部分中,在General选项卡下,您将看到textvariable为空。在此字段中输入:entry1\u var

对于条目_2,在textvariable字段中输入:entry2_var;对于条目_3,在textvariable字段中输入:entry3_var

要使单击OK按钮在控制台上打印蓝色、黄色和绿色的3个变量值,然后:选择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>
同时删除或注释行printapp.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()
第三个条目小部件将从显示绿色变为红色

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"))
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()
$ python3 ask.py
blue
yellow
green