一.窗口的选择
Qt新建窗体,一共有三种类型,分别是QDialog、QMainWindow、QWidget。在大多数场景下,三者没有区别,大家可以任意选择(如果你想搞明白三者不同,可以自行搜索)。唯独需要注意QMainWindow拥有菜单栏、状态栏和工具栏,而QDialog和QWidget是没有的。如果在你的设计中需要使用这些栏目,请选择QMainWindow。
在第一次新建窗体时,系统默认创建QMainWindow类,如果你觉得菜单栏或状态栏或工具栏没有用或状态栏太影响美观,可以右键选中栏目将之移除;后续也可以右键MainWindow将之添加回来。
二.给菜单栏添加关联的方法(处理函数)
直接上代码:
class Window(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.objectName.triggered.connect(self.start)
def start(self):
print('hello world')
pass
三.子窗口调用
在GUI界面的设计过程中,可能会遇到需要跳转到新的界面,或者多个界面之间的调用。
在调用子界面时,我们只需要将子界面的类进行实例化,然后再通过show()函数将其显示即可
一定要在子界面创建的实例的变量名前加self,否则子界面可能一闪而过。
class Window(QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.objectName.triggered.connect(self.start)
def start(self):
self.window2 = window2() # 创建子界面的类的实例
self.window2.show()
pass
class window2(Ui_Form2, QWidget):
def __init__(self):
super().__init__()
self.setupUi(self)
if __name__ == '__main__':
app = QApplication([])
app.setStyleSheet(qdarkstyle.load_stylesheet_pyqt5())
window = Window() # 创建一个 类Window 的实例
window.show() # 创建 window 对象后,必须使用 .show() 使其可见。
app.exec_() # 事件循环
利用self.hide()能将主界面隐藏,self.show()能将主界面重新展示:
def start(self):
self,hide()
self.window2 = window2() # 创建子界面的类的实例
self.window2.show()
# self.show()
pass
但如果self.hide()和self.show()同时出现在一个函数内,则主界面隐藏一瞬后又重新出现。
如何实现打开子界面时隐藏主界面,关闭子界面时重新展示主界面呢?希望大家能不吝赐教