2017-02-18 34 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. Вы должны использовать его один раз за файл .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.

+0

Errrr Я в замешательстве, почему изменения elya5 были отклонены; они верны и исправляют фактические ошибки в моем коде. Я добавил их вручную в любом случае. – andlabs

+0

Я тоже смущен: D – elya5

+0

'self.entry3.props.text' – TingPing

 Смежные вопросы

  • Нет связанных вопросов^_^