2014-11-06 7 views
0

인사말Pygtk 중첩 항목 및 노트북 컨트롤

주 창에서 노트의 첫 번째 페이지에서 항목 텍스트를 가져 오는 데 어려움이 있습니다. 필자는 노트북없이 코드를 테스트했으나 이제는 노트를 사용하여 문자열을 부동으로 변환 할 수 없다거나 코드가 실패합니다.

내가

여기

당신이 도움이 할 수 있다면 나는 그것을 감사하겠습니다 난 (해석) 한 일이다 계정으로 노트북 페이지 또는 데이터 컨테이너 물건을해야합니까.

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

사용중인 glade 파일이나 glade 파일없이 작동하는 간단한 예제를 게시 할 수 있습니까? – elya5

+0

노트북 (Pygtk 3 with glade builder)을 여러 페이지의 각 항목에 사용하는 방법의 실제 예를 얻을 수 있습니까? 첫 번째 페이지에는 4 개의 텍스트 항목이 있고 두 번째 페이지에는 4 개의 항목이 있고 세 번째 페이지에는 4 개의 항목이 있다고 가정 해보십시오. 고마워요 Elya5 – Warrior4just

답변

0

나는 당신의 문제가 무엇인지 정말로 모른다. 예상대로 Gtk.Entry에서 텍스트를 검색 할 수 있습니다. 이 동작은 Gtk.Notebook에 의해 변경되지 않습니다. float 로의 변환은 get_text()과 아무 관련이 없습니다. 문자열을 얻었고 문자열에 유효한 float가없고 변환하려고하면 오류가 발생합니다.

이 예제는 두 개의 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을 사용하는 것이 좋습니다.