2016-10-18 3 views
0

У меня есть следующий код, и я следую учебник:Python GUI в WxPython не будет работать

(http://zetcode.com/wxpython/layout/ - GoToClass часть)

Я не могу понять, что случилось с ним ...:/

Как вы можете видеть в учебнике, он должен производить это:

enter image description here

код:

#!/usr/bin/python 
# -*- coding: utf-8 -*- 

# gotoclass.py 

import wx 

class Example(wx.Frame): 

    def __init__(self, parent, title): 
     super(Example, self).__init__(parent, title=title, 
      size=(390, 350)) 

     self.InitUI() 
     self.Centre() 
     self.Show()  

    def InitUI(self): 

     panel = wx.Panel(self) 

     font = wx.SystemSettings_GetFont(wx.SYS_SYSTEM_FONT) 
     font.SetPointSize(9) 

     vbox = wx.BoxSizer(wx.VERTICAL) 

     hbox1 = wx.BoxSizer(wx.HORIZONTAL) 
     st1 = wx.StaticText(panel, label='Class Name') 
     st1.SetFont(font) 
     hbox1.Add(st1, flag=wx.RIGHT, border=8) 
     tc = wx.TextCtrl(panel) 
     hbox1.Add(tc, proportion=1) 
     vbox.Add(hbox1, flag=wx.EXPAND|wx.LEFT|wx.RIGHT|wx.TOP, border=10) 

     vbox.Add((-1, 10)) 

     hbox2 = wx.BoxSizer(wx.HORIZONTAL) 
     st2 = wx.StaticText(panel, label='Matching Classes') 
     st2.SetFont(font) 
     hbox2.Add(st2) 
     vbox.Add(hbox2, flag=wx.LEFT | wx.TOP, border=10) 

     vbox.Add((-1, 10)) 

     hbox3 = wx.BoxSizer(wx.HORIZONTAL) 
     tc2 = wx.TextCtrl(panel, style=wx.TE_MULTILINE) 
     hbox3.Add(tc2, proportion=1, flag=wx.EXPAND) 
     vbox.Add(hbox3, proportion=1, flag=wx.LEFT|wx.RIGHT|wx.EXPAND, 
      border=10) 

     vbox.Add((-1, 25)) 

     hbox4 = wx.BoxSizer(wx.HORIZONTAL) 
     cb1 = wx.CheckBox(panel, label='Case Sensitive') 
     cb1.SetFont(font) 
     hbox4.Add(cb1) 
     cb2 = wx.CheckBox(panel, label='Nested Classes') 
     cb2.SetFont(font) 
     hbox4.Add(cb2, flag=wx.LEFT, border=10) 
     cb3 = wx.CheckBox(panel, label='Non-Project classes') 
     cb3.SetFont(font) 
     hbox4.Add(cb3, flag=wx.LEFT, border=10) 
     vbox.Add(hbox4, flag=wx.LEFT, border=10) 

     vbox.Add((-1, 25)) 

     hbox5 = wx.BoxSizer(wx.HORIZONTAL) 
     btn1 = wx.Button(panel, label='Ok', size=(70, 30)) 
     hbox5.Add(btn1) 
     btn2 = wx.Button(panel, label='Close', size=(70, 30)) 
     hbox5.Add(btn2, flag=wx.LEFT|wx.BOTTOM, border=5) 
     vbox.Add(hbox5, flag=wx.ALIGN_RIGHT|wx.RIGHT, border=10) 

     panel.SetSizer(vbox) 


if __name__ == '__main__': 

    app = wx.App() 
    Example(None, title='Go To Class') 
    app.MainLoop() 

Следующие ошибки я получаю: (Удалены путь к файлу

Traceback (most recent call last): 
    File "[path]", line 78, in <module> 
    Example(None, title='Go To Class') 
    File "[path]", line 14, in __init__ 
    self.InitUI() 
    File "[path]", line 21, in InitUI 
    font = wx.SystemSettings_GetFont(wx.SYS_SYSTEM_FONT) 
AttributeError: 'module' object has no attribute 'SystemSettings_GetFont' 
+0

Не должно быть 'wx.SystemSettings.GetFont (...)'? Ошибка в примере, возможно ... oops, no, просто увидела примечание wxPython ... вы, по-видимому, правы. И все же явно нет такого атрибута в 'wx'. Закрыть голосование втянуто! – holdenweb

+2

Возможно, документы устарели - [здесь] (http://nullege.com/codes/search/wx.SystemSettings.GetFont) Я вижу 'wx.SystemSettings.GetFont' - попробуйте и сообщите нам, что – holdenweb

+0

Они действительно устарели - я удалил знак подчеркивания и добавил вместо него точку. Запуск его снова дает желаемый результат. Спасибо. – javanewbie

ответ

4

Это просто опечатка. Правильный путь wx.SystemSettings.GetFont(), а также увидеть документы: https://wxpython.org/Phoenix/docs/html/wx.SystemSettings.html#wx.SystemSettings.GetFont

Измените метод InitUI к этому:

def InitUI(self): 
    panel = wx.Panel(self) 

    font = wx.SystemSettings.GetFont(wx.SYS_SYSTEM_FONT) 
    font.SetPointSize(9) 
    ... 

Надеется, что это помогает!

+0

Он делает, спасибо! – javanewbie

+0

Удаление версии статических методов '_' было удалено в wxPython 4.x. См. Https://docs.wxpython.org/MigrationGuide.html#static-methods – RobinDunn

+0

@RobinDunn благодарит за указание! Это скорее взято из старого учебника или документации, чем опечатка. Приятно видеть тебя здесь :) – linusg

 Смежные вопросы

  • Нет связанных вопросов^_^