2017-02-18 54 views
1

我一直在掙扎兩天,以獲得來自entry3,entry2和entry 1的用戶輸入,並用它定義3個變量l,w和h。無論我嘗試什麼,我都無法讓Gtk.Entry.get_text()認出我的名字!這是我的代碼;它啓動了我爲解決畢達哥拉斯定理問題而創建的一個很好的小gui。在python中,如何從Gtk.entry輸入框中獲取值並將其傳遞給變量?

#!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() 

任何幫助表示讚賞,我在我的繩索結束。這是唯一需要解決的問題

回答

2

你不應該這樣使用GtkBuilder。當你創建你的窗口時(例如,在你的班級的__init__中),然後get_object()所有東西都變成實例變量時,你應該每.ui文件使用一次。

我的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

+0

Errrr我很困惑,爲什麼@ elya5的編輯被拒絕;他們是正確的,並修復我的代碼中的實際錯誤。無論如何我手動添加它們。 – andlabs

+0

我也很困惑:D – elya5

+0

'self.entry3.props.text' – TingPing

相關問題