我想做一個簡單的小部件有三個按鈕,其中每個按鈕點擊時會顯示相應的其他小部件。簡單的PyQt4顯示其他窗口
以下是我試圖運行的代碼,但無法找出爲什麼新的小部件沒有顯示。
from PyQt4 import QtGui, QtCore
from functools import partial
import sys
class MainWidget(QtGui.QWidget):
def __init__(self):
super(MainWidget, self).__init__()
self.main_widget()
def main_widget(self):
another = Another()
simple = Simple()
grid = QtGui.QGridLayout()
show_another_button = QtGui.QPushButton("Show Another")
show_another_button.clicked.connect(another.show_another)
grid.addWidget(show_another_button, 0, 0)
show_simple_button = QtGui.QPushButton("Show Simple")
show_simple_button.clicked.connect(simple.show_simple)
grid.addWidget(show_simple_button, 0, 1)
print_button = QtGui.QPushButton("Print Hello")
print_button.clicked.connect(partial(print, "Hello"))
grid.addWidget(another_button, 0, 2)
self.setLayout(grid)
self.show()
class Another(QtGui.QWidget):
def __init__(self):
print("another initialized")
super(Another, self).__init__()
def show_another(self):
print("another called")
grid = QtGui.QGridLayout()
self.setLayout(grid)
self.show()
class Simple(QtGui.QDialog):
def __init__(self):
print("simple initialized")
super(Simple, self).__init__()
def show_simple(self):
print("simple called")
self.show()
def main():
app = QtGui.QApplication(sys.argv)
main_widget = MainWidget()
sys.exit(app.exec_())
if __name__ == "__main__":
main()
請幫忙!
他們可能在函數的末尾收集垃圾。嘗試使它們成爲實例屬性。改變'簡單'爲'self.simple'和另一個相同。另一個沒有函數'show_another','ex = Example()'可能是一個錯字。 – M4rtini
是的,實際上有點想通了,是的例子是一個錯字,並修復它。感謝Thanx的幫助。 – Haroon