在python中,如何从Gtk.entry输入框中获取值并将其传递给变量?

时间:2017-02-18 00:56:53

标签: python user-interface gtk

我现在已经奋斗了两天来从entry3,entry2和entry 1获取用户输入并用它定义3个变量l,w和h。无论我尝试什么,我都无法让Gtk.Entry.get_text()认出我的命令!这是我的代码;它启动了我为解决毕达哥拉斯定理问题而创建的一个很好的小gui。

#!usr/bin/env python
import math
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
a = False
b = False
c = True #changed for test
l = 0
w = 0
h = 0
ans = 0

class MyGI(Gtk.Window):
    def gtk_main_quit(self, *args):
        Gtk.main_quit(*args)
        raise SystemExit
    def solve(self, widget):
        self.builder = Gtk.Builder()
        l = self.builder.get_object('entry3')
        float(l)
        print l
        if a == True:
            ans = math.pow(h, 2) - math.pow(w, 2)
            ans = math.sqrt(ans) 
            print(ans)
        if b == True:
            ans = math.pow(h, 2) - math.pow(l, 2)
            ans = math.sqrt(ans) 
            print(ans)
        if c == True:
            ans = math.pow(l, 2) + math.pow(w, 2)
            ans = math.sqrt(ans) 
            print(ans)
    def a_x(self, widget):
        a = True
        b = False
        c = False
        print a
    def b_x(self, widget):
        a = False
        b = True
        c = False
    def c_x(self, widget):
        a = False
        b = False
        c = True
    def entree(self, widget):
        pass
builder = Gtk.Builder()
builder.add_from_file("pythag.glade")
builder.connect_signals(MyGI())
window = builder.get_object("window1")    #old window method
window.show_all()

Gtk.main()

任何帮助都表示赞赏,我在绳索的最后。这是解决的唯一问题

1 个答案:

答案 0 :(得分:2)

你不应该像这样使用GtkBuilder。您应该在每个.ui文件中使用它一次,当您创建窗口时(例如,在您班级的__init__中),然后get_object()一切都进入实例变量。

我的Python很生疏,所以,像这样:

    def __init__(self):
        super().__init__()
        builder = Gtk.Builder.new_from_file("pythag.glade")
        builder.connect_signals(self)
        self.window = builder.get_object("window1")
        self.entry3 = builder.get_object("entry3")
        self.window.show_all()
    def solve(self, widget):
        float(self.entry3)

要从GtkEntry获取文本,请使用语法entryObject.props.text