问候语
我在主窗口中从笔记本的第一页检索输入文本时遇到了困难。 我在没有笔记本的情况下测试了我的代码,但现在使用笔记本,它要么抱怨不能将字符串转换为浮点数,要么代码失败。
我是否必须考虑Notebook页面或数据容器的内容
这是我所做的(解释),如果你可以帮助我,我会很感激。
from gi.repository import Gtk , Gio
from scipy.integrate import odeint
import math
import numpy as np
from numpy import arange , pi, random, linspace
class main :
def __init__(self):
self.builder = Gtk.Builder()
self.builder.add_from_file("File2.glade")
self.window=self.builder.get_object("window1")
self.window2=self.builder.get_object("window2")
self.ntbk=self.builder.get_object("notebook1")
sw1=self.builder.get_object('scrolledwindow1')
self.builder.connect_signals(Handler())
self.window.show_all()
class Handler:
def on_window1_destroy(self, object, data=None):
Gtk.main_quit()
def on_radiobutton1_toggled(self, widget):
# I will be doing something here
def on_radiobutton2_toggled(self, widget):
# I will be doing another thing here
def on_radiobutton3_toggled(self, widget):
# other
try:
m1=float(main.en1.get_text());
m2= float(main.en2.get_text());
m3= float(main.en3.get_text());
except ValueError:
print " This is not working "
return 0

所以基本上它不是阅读,它打印"它不工作" ,如果我采取错误处理它会抛出你,不能将字符串转换为浮点数 我很感激
答案 0 :(得分:0)
我不确定你的问题是什么。您可以按预期从Gtk.Entry中检索文本。 Gtk.Notebook不会更改此行为。转换为float与get_text()
无关。你得到一个字符串,如果字符串不包含有效的浮点数,你试图转换它,你将收到一个错误。
这是一个包含两个Gtk.Entries的Gtk.Notebook的工作示例,如果单击Gtk.Button,它将调用get_text()
并尝试将字符串转换为float。
from gi.repository import Gtk
class Example:
def __init__(self):
window = Gtk.Window()
window.connect('delete-event', Gtk.main_quit)
box = Gtk.Box(orientation=Gtk.Orientation.VERTICAL)
notebook = Gtk.Notebook()
button = Gtk.Button('Get text')
button.connect('clicked', self.on_button_clicked)
self.entry1 = Gtk.Entry()
self.entry2 = Gtk.Entry()
self.entry2.set_input_purpose(Gtk.InputPurpose.NUMBER)
notebook.append_page(self.entry1)
notebook.append_page(self.entry2)
box.pack_end(button, True, True, 0)
box.pack_start(notebook, True, True, 0)
window.add(box)
window.show_all()
def on_button_clicked(self, widget):
self.try_conversion(self.entry1.get_text())
self.try_conversion(self.entry2.get_text())
def try_conversion(self, text):
try:
print('Float: {}'.format(float(text)))
except ValueError:
print('String: ' + text)
if __name__ == '__main__':
Example()
Gtk.main()
如果你只想要一个数字,你还应该考虑使用Gtk.SpinButton。