QMainWindow, QWidget, QDialog三个类都是用来创建窗口的,可以直接使用或继承后再使用。QMainWindow窗口可以包含菜单栏、工具栏、状态栏、标题栏等,是最常见的窗口形式,也是GUI程序的主窗口。QDialog是对话框窗口的基类。对话框主要用来执行短期任务,或者与用户互动,它可以是模态的,也可以是非模态的。QDialog窗口没有菜单栏、工具栏、状态栏等。
如果是主窗口,就用QMainWindow类。如果是对话框,就用QDialog类。如果不确定,或者有可能是顶层窗口,也有可能嵌入到其它窗口中,那就用QWidget类。
创建主窗口
如果一个窗口包含一个或多个窗口,那么这个窗口就是父窗口,被包含的窗口就是子窗口。没有父窗口的窗口就是顶层窗口。QMainWindow就是一个顶层窗口。
QMainWindow类中比较重要的方法,如下:
addToolBar() : 添加工具栏
centralWidget() : 返回窗口中心的一个控件,未设置时返回NULL
menuBar() : 返回主窗口的菜单栏
setCentralWidget() : 设置窗口中心的控件
setStatusBar() : 设置状态栏
statusBar() : 获取状态栏对象后,调用状态栏对象的showMessage(message, int timeout = 0)方法,显示状态栏信息。其中第一个参数是显示的状态栏信息;第二个参数是信息停留的时间,单位是毫秒,默认是0, 表示一直显示状态栏信息
在开发GUI中,用Qt Designer虽然很方便,但是过于依赖,会导致很难理解QT的一些实现方法,我个人还是喜欢自己码代码。
实例一
创建一个简单的窗口:
import sys from PyQt5.QtWidgets import QMainWindow, QApplication
class MainWindow(QMainWindow):
def __init__(self, parent=None):
super(MainWindow, self).__init__(parent)
self.resize(400, 200)
self.status = self.statusBar()
self.status.showMessage("这是一个状态栏", 5000)
self.setWindowTitle("主窗口实例")
if __name__ == "__main__":
app = QApplication(sys.argv)
form = MainWindow()
form.show()
sys.exit(app.exec_())
效果图:
实例二
创建按钮关闭主窗口&&主窗口居中显示:
import sys
from PyQt5.QtWidgets import QMainWindow,QApplication,QPushButton,QHBoxLayout,QWidget,QDesktopWidget
class MainWindow(QMainWindow):
def __init__(self,parent=None):
super(MainWindow, self).__init__(parent)
#窗体设置
self.resize(300, 200)
self.setWindowTitle("关闭窗口")
self.center()
#按钮设置
self.btn = QPushButton("关闭")
self.btn.clicked.connect(self.onBtnClickCloseWin) #单击事件
#布局
layout = QHBoxLayout()
layout.addWidget(self.btn)
widGet=QWidget() widGet.setLayout(layout)
self.setCentralWidget(widGet)
#窗体居中
def center(self):
self.size=QDesktopWidget().screenGeometry()
self.resize=self.geometry()
self.move((self.size.width()-self.resize.width())/2,(self.size.height()-self.resize.height())/2)
def onBtnClickCloseWin(self):
#发送消息对象
sender=self.sender()
print( sender.text() + ' 被按下了' )
appInstance=QApplication.instance()
appInstance.quit()
if __name__=="__main__":
app=QApplication(sys.argv)
mainWindow=MainWindow()
mainWindow.show()
sys.exit(app.exec_())
效果图:
完结,后续持续更新PyQt5的相关内容.
推荐阅读:现在手机性价比最高的手机
-
第二届进博会各项保障工作进行得如何?这里有一
意大利的“黄金面包”、珠宝首饰,土耳其的精美瓷器、手工艺品,菲律宾的榴莲干、椰子油、菠萝……随着第二届中国国际进口博览会日益临近,越来越多的海外展品陆续抵达上海...
2019-10-17 -
智能示教系统“自动编程”,工人能带机器人“徒
新京报快讯(记者 张璐)现代社会工业机器人被大量使用,但培训熟练的编程人员需要花费时间和精力。如何让不会编程的工人也能带机器人“徒弟”?在今天开展的中关村国际前...
2019-10-17 -
「世经研究」2018年高速公路行业运行情况及
一、2018年高速公路行业运行分析(一)行业固定资产投资情况2018年1-12月,全国公路固定资产投资累计为21335.18亿元,同比增长0.4%。其中东部地区...
2019-10-17 -
凑了两万去创业,他靠一支蜡烛成为26家世界5
他叫陈索斌。1那支蜡烛,是金王Kingking。二十世纪九十年代,陈索斌创办青岛金王,开始从事烛光材料以及玻璃制品、工艺制品的开发、生产、销售,国内为初始市场,...
2019-10-17 -
2019界面中国上市公司最佳职业经理人发布:
界面首次推出中国上市公司职业经理人榜单,这也是中国第一份评价职业经理人的榜单。中国民营经济发展至今,已成为中国经济体系中必不可少的一部分。最新国家统计局数据显示...
2019-10-17 -
5G智能环卫机器人正式上市 以“智”突围行业
5G智能环卫机器人正式上市。中新网湖南新闻10月15日电(记者 刘双双)盈峰环境科技集团旗下中联重科环境产业有限公司(以下简称盈峰中联环境)“以小见大智造美丽中...
2019-10-17 -
全球十大金融科技公司,中国独揽4个席位
10月13日,著名资本资讯网站Investopedia(投资百科)公布了最新一期的全球十大金融科技公司,该评选通过评估金融科技公司的市值、市场占有率、发展潜力和...
2019-10-17 -
中国最赚钱的珠宝店:老板身家千亿,这个金字招
2019年10月最新的消息:近日,时尚零售企业百强榜单正式出炉。这份榜单涵盖了74家服装服饰鞋履家纺类企业、15家金银珠宝首饰类企业以及11家护肤美妆类企业。上...
2019-10-17