gpt4 book ai didi

python - QTabWidget 和 switch-case

转载 作者:行者123 更新时间:2023-12-04 09:43:20 25 4
gpt4 key购买 nike

当我点击按钮时,我需要不同的定义,具体取决于所选的选项卡。我试图这样做,但它不起作用。当前任何选项卡时,都会打印“kek”。

from PyQt5 import QtWidgets, uic
from PyQt5.QtWidgets import *
import sys

app = QApplication(sys.argv)
ui = uic.loadUi("example.ui")

def lol():
print ('lol')

def kek():
print ('kek')

case = {
0 : lol,
1 : kek
}


ui.pushButton.clicked.connect(case.get(ui.tabWidget.currentIndex()))


ui.show()
app.exec()

这是使用的用户界面:

enter image description here
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>800</width>
<height>600</height>
</rect>
</property>
<property name="windowTitle">
<string>MainWindow</string>
</property>
<widget class="QWidget" name="centralwidget">
<widget class="QPushButton" name="pushButton">
<property name="geometry">
<rect>
<x>330</x>
<y>490</y>
<width>93</width>
<height>28</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
<widget class="QTabWidget" name="tabWidget">
<property name="geometry">
<rect>
<x>110</x>
<y>60</y>
<width>591</width>
<height>381</height>
</rect>
</property>
<property name="currentIndex">
<number>1</number>
</property>
<widget class="QWidget" name="tab">
<attribute name="title">
<string>Tab 1</string>
</attribute>
</widget>
<widget class="QWidget" name="tab_2">
<attribute name="title">
<string>Tab 2</string>
</attribute>
</widget>
</widget>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>

最佳答案

问题是case.get(ui.tabWidget.currentIndex())在连接时评估,而不是在单击时评估,因此您有初始 currentIndex。

一个可能的解决方案是使用 lambda 方法:

ui.pushButton.clicked.connect(
lambda: case.get(ui.tabWidget.currentIndex(), lambda: None)()
)

或者创建一个中间函数:
def on_clicked():
case.get(ui.tabWidget.currentIndex(), lambda: None)()

ui.pushButton.clicked.connect(on_clicked)

关于python - QTabWidget 和 switch-case,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62236156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com