下面通过实例代码给大家介绍python 中pyqt5 树节点点击实现多窗口切换问题,具体代码如下所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
# coding=utf-8
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
class Example(QWidget):
def __init__( self ):
super ().__init__()
self .initUI()
def initUI( self ):
hbox = QHBoxLayout( self )
left = QFrame( self )
# QFrame 控件添加StyledPanel样式能使QFrame 控件之间的界限更加明显
#left.setFrameShape(QFrame.StyledPanel)
right = QFrame( self )
#right.setFrameShape(QFrame.StyledPanel)
splitter1 = QSplitter(Qt.Horizontal)
splitter1.addWidget(left)
splitter1.setSizes([ 20 ,]) #设置分隔条位置
splitter1.addWidget(right)
hbox.addWidget(splitter1)
self .setLayout(hbox)
# 树
self .tree = QTreeWidget(left)
self .tree.setStyleSheet( "background-color:#eeeeee;border:outset;color:#215b63;" )
self .tree.setAutoScroll( True )
self .tree.setEditTriggers(QAbstractItemView.DoubleClicked | QAbstractItemView.EditKeyPressed)
self .tree.setTextElideMode(Qt.ElideMiddle)
#self.tree.setIndentation(30)
self .tree.setRootIsDecorated( True )
self .tree.setUniformRowHeights( False )
self .tree.setItemsExpandable( True )
self .tree.setAnimated( False )
self .tree.setHeaderHidden( True )
self .tree.setExpandsOnDoubleClick( True )
self .tree.setObjectName( "tree" )
# 设置根节点
root = QTreeWidgetItem( self .tree)
root.setText( 0 , '系统管理' )
# 设置树形控件的列的宽度
#self.tree.setColumnWidth(0, 150)
# 设置子节点1
child1 = QTreeWidgetItem()
child1.setText( 0 , '增加人员信息' )
root.addChild(child1)
# 设置子节点2
child2 = QTreeWidgetItem(root)
child2.setText( 0 , '查询人员信息' )
# 加载根节点的所有属性与子控件
self .tree.addTopLevelItem(root)
# 设置stackedWidget
self .stackedWidget = QStackedWidget(right)
# 设置第一个面板
self .form1 = QWidget()
self .formLayout1 = QHBoxLayout( self .form1)
self .label1 = QLabel()
self .label1.setText( "增加人员信息面板" )
self .label1.setSizePolicy(QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding))
self .label1.setAlignment(Qt.AlignCenter)
self .label1.setFont(QFont( "Roman times" , 50 , QFont.Bold))
self .formLayout1.addWidget( self .label1)
# 设置第二个面板
self .form2 = QWidget()
self .formLayout2 = QHBoxLayout( self .form2)
self .label2 = QLabel()
self .label2.setText( "查询人员信息面板" )
self .label2.setSizePolicy(QSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding))
self .label2.setAlignment(Qt.AlignCenter)
self .label2.setFont(QFont( "Roman times" , 50 , QFont.Bold))
self .formLayout2.addWidget( self .label2)
# 将两个面板,加入stackedWidget
self .stackedWidget.addWidget( self .form1)
self .stackedWidget.addWidget( self .form2)
# 树节点监听事件
self .tree.clicked.connect( self .onClicked)
# 窗口最大化
self .showMaximized()
self .setWindowTitle( '树窗口分隔案列' )
self .show()
def onClicked( self ,qmodeLindex):
item = self .tree.currentItem()
print ( 'Key=%s,value=%s' % (item.text( 0 ),item.text( 1 )))
if item.text( 0 ) = = '增加人员信息' :
self .on_pushButton1_clicked()
elif item.text( 0 ) = = '查询人员信息' :
self .on_pushButton2_clicked()
else :
print ( '返回主界面' )
# 按钮一:打开第一个面板
def on_pushButton1_clicked( self ):
self .stackedWidget.setCurrentIndex( 0 )
# 按钮二:打开第二个面板
def on_pushButton2_clicked( self ):
self .stackedWidget.setCurrentIndex( 1 )
if __name__ = = '__main__' :
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
|
ps:下面给大家介绍下python pyqt5 点击按钮来打开另一个窗口
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
import ui_denglu as dl
import ui_zhuche as zc
from PyQt5.QtWidgets import QApplication,QMainWindow,QDialog
import sys
class parentWindow(QMainWindow):
def __init__( self ):
QMainWindow.__init__( self )
self .main_ui = dl.Ui_submit_user()
self .main_ui.setupUi( self )
class childWindow(QDialog):
def __init__( self ):
QDialog.__init__( self )
self .child = zc.Ui_MainWindow()
self .child.setupUi( self )
if __name__ = = '__main__' :
app = QApplication(sys.argv)
window = parentWindow()
child = childWindow()
#通过toolButton将两个窗体关联
btn = window.main_ui.pushButton_new
btn.clicked.connect(child.show)
# 显示
window.show()
sys.exit(app.exec_())
|
总结
以上所述是小编给大家介绍的python 中pyqt5 树节点点击实现多窗口切换问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
原文链接:https://www.cnblogs.com/kennyhip/articles/9961130.html