我已经花了两天时间从entry3、entry2和entry 1获取用户输入并用它定义3个变量l、w和h。无论我如何尝试,我都无法让 Gtk.Entry.get_text()
识别我的条目!这是我的代码;它启动了我为解决毕达哥拉斯定理问题而创建的一个漂亮的小图形用户界面。
#!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()
感谢任何帮助,我已无能为力了。这是唯一需要解决的问题
最佳答案
你不应该那样使用 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
。
关于python - 在 python 中,如何从 Gtk.entry 输入框中获取值并将其传递给变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42309861/