gpt4 book ai didi

python - 如何将 QComboBox 中的文本存储在全局变量中

转载 作者:行者123 更新时间:2023-12-01 07:56:44 24 4
gpt4 key购买 nike

我有以下代码,在筛选 StackOverflow 上的答案后,我无法设法将它们适应我的(非常简单的)代码。这将创建一个带有两个下拉列表的窗口(一个选择月份,另一个选择年份)和一个按钮来开始脚本的其余部分。

我需要将组合框的“选择”存储在全局变量中,以便在脚本的其余部分中使用。

我不确定这是否是写得最优雅的,甚至是最好的方法。

我不确定是否需要将其封装在某种类中,但到目前为止我还没有运气。下面的代码当前仅返回起始文本,而不是用户在下拉列表中选择的文本。

def runapp():
def on_button_clicked():
startprocessing()

app = QApplication([])
app.setStyle('Fusion')
window = QWidget()
layout = QVBoxLayout()
combobox_month = QComboBox()
combobox_year = QComboBox()
progress = QLabel('Test')
layout.addWidget(progress)
layout.addWidget(combobox_month)
layout.addWidget(combobox_year)
combobox_month.addItems(calendar.month_name)
combobox_year.addItems(['2017', '2018', '2019'])
processbutton = QPushButton('Process')
layout.addWidget(processbutton)
global month
month = str(combobox_month.currentText())
global year
year = str(combobox_year.currentText())
processbutton.clicked.connect(on_button_clicked)
window.setLayout(layout)
window.show()
app.exec_()

最佳答案

分析你是否需要一个类或者不难分析你提供的内容,我也推荐阅读Why are global variables evil?因为您可能滥用全局变量。解决问题,您必须通过将插槽连接到 currentTextChanged 信号来更新变量的值:

from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QComboBox, QLabel, QPushButton
from PyQt5.QtCore import pyqtSlot

month = ""
year = ""

def runapp():
def on_button_clicked():
# startprocessing()
print("process")

app = QApplication([])
app.setStyle('Fusion')
window = QWidget()
layout = QVBoxLayout()
combobox_month = QComboBox()
combobox_year = QComboBox()
progress = QLabel('Test')
layout.addWidget(progress)
layout.addWidget(combobox_month)
layout.addWidget(combobox_year)
combobox_month.addItems(calendar.month_name)
combobox_year.addItems(['2017', '2018', '2019'])
processbutton = QPushButton('Process')
layout.addWidget(processbutton)
@pyqtSlot(str)
def on_combobox_month_changed(text):
global month
month = text

@pyqtSlot(str)
def on_combobox_year_changed(text):
global year
year = text
combobox_month.currentTextChanged.connect(on_combobox_month_changed)
combobox_year.currentTextChanged.connect(on_combobox_year_changed)
processbutton.clicked.connect(on_button_clicked)
window.setLayout(layout)
window.show()
app.exec_()

if __name__ == '__main__':
runapp()
print(month, year)

关于python - 如何将 QComboBox 中的文本存储在全局变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55935859/

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