我现在已经奋斗了两天来从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()
任何帮助都表示赞赏,我在绳索的最后。这是解决的唯一问题
答案 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
。