Pygtk嵌套条目和笔记本控件

时间:2014-11-06 21:19:02

标签: python user-interface pygtk glade

问候语

我在主窗口中从笔记本的第一页检索输入文本时遇到了困难。 我在没有笔记本的情况下测试了我的代码,但现在使用笔记本,它要么抱怨不能将字符串转换为浮点数,要么代码失败。

我是否必须考虑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




所以基本上它不是阅读,它打印"它不工作" ,如果我采取错误处理它会抛出你,不能将字符串转换为浮点数 我很感激

1 个答案:

答案 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。