Панель wxPython не отображается - PullRequest
0 голосов
/ 07 ноября 2019

Я играю с wxPython. Насколько я понимаю, вам нужны следующие элементы: 1. Главное «приложение» 2. Рамка (или главное окно, как я думаю) 3. Панель внутри рамки 4. Виджеты внутри панели для выполнения действий.

Думаю, что я в порядке с пунктами 1 и 2, так как я получаю всплывающее окно, когда запускаю свой код. Тем не менее, я попытался добавить панель и некоторый основной текст к ней - и ничего не показывает.

Мой код:

import wx

class PDFApp(wx.App):
    def OnInit(self):   #Method used to define Frame & show it

        self.frame = PDFFrame(parent=None, title="PDF Combiner", size=(300, 300))
        self.frame.Show()
        return True  

class PDFFrame(wx.Frame):
    def _init_(self, parent, title):
        super(PDFFrame, self).__init__(parent, title=title)

        Panel = PDFPanel(self)

class PDFPanel(wx.Panel):
    def _init_(self, parent):
        super(PDFPanel, self).__init__(parent)

        self.Label = wx.StaticText(self, label="hello")


App = PDFApp()
App.MainLoop()

Указатели на мои ошибки / упущения - очень ценны!

1 Ответ

0 голосов
/ 09 ноября 2019

Ваш код необычен в том смысле, что wx.App обычно просто app = wx.App()
Однако _init_ должно быть __init__ и не использовать имена переменных, которые могут конфликтовать с зарезервированными словами или внутренними элементами.
т.е. Panel или Label и, вероятно, App.
Должно работать следующее:

import wx

class PDFApp(wx.App):
    def OnInit(self):   #Method used to define Frame & show it

        frame = PDFFrame(parent=None, title="PDF Combiner")
        frame.Show()
        return True  

class PDFFrame(wx.Frame):
    def __init__(self, parent, title):
        super(PDFFrame, self).__init__(parent, title=title)

        panel = PDFPanel(self)

class PDFPanel(wx.Panel):
    def __init__(self, parent):
        super(PDFPanel, self).__init__(parent)

        label = wx.StaticText(self, label="hello", pos=(50,100))


App = PDFApp()
App.MainLoop()

enter image description here

Редактировать:
Я довольно старомоден (и самоучка), поэтому я бы написал что-то простое, например:

import wx

class PdfFrame(wx.Frame):
    def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, -1, title)
        panel = wx.Panel(self)
        label = wx.StaticText(panel, -1, label="hello", pos=(50,100))
        self.Show()

app = wx.App()
frame = PdfFrame(None, title = "Simple Panel")
app.MainLoop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...