python - 如何用 Qt5 python 中的按钮替换全局变量?
问题描述
我在使用 Qt5 中的按钮替换全局变量的值时遇到问题。
我对 Python 比较陌生,我确信我错过了一些微不足道的东西,但我找不到解决方案。
下面是一个 GUI 示例,其中“向下移动”按钮将 QLineEdit 的位置移向底部。问题是我只能将它移动一次到一个固定的新位置。我无法通过多次按下按钮继续向下移动它,因为我无法不断更新全局变量 YY 的值。事实上,当按下按钮后打印 YY 的值时,它总是显示相同的值。
从函数返回新的 YY 值并不能解决问题,因为我无法通过连接信号将新值与变量相关联。
提前致谢!
import sys
import PyQt5.QtCore
from PyQt5.QtCore import Qt
import PyQt5.QtWidgets as qt5
from PyQt5.QtWidgets import QApplication, QVBoxLayout, QLabel, QSlider, QLineEdit, QWidget, QLCDNumber, QSlider, QVBoxLayout
from PyQt5.QtGui import QIcon
XX = 800
YY = 80
def MoveDown(x):
newYY = x + 60
qle.move(XX, newYY)
return UpdateYY(newYY)
def UpdateYY(y):
YY = y
print(YY)
#############################################
app = PyQt5.QtWidgets.QApplication(sys.argv)
w = PyQt5.QtWidgets.QMainWindow()
w.resize(1280, 480)
w.move(300, 300)
MainWindow = PyQt5.QtWidgets.QWidget()
vboxlayout = qt5.QVBoxLayout()
hboxlayout = qt5.QHBoxLayout()
vboxlayout.addLayout(hboxlayout)
MainWindow.setLayout(vboxlayout)
qle = QLineEdit(MainWindow)
qle.move(XX, YY)
MoveButton = qt5.QPushButton("Move down")
MoveButton.clicked.connect(lambda: MoveDown(YY))
vboxlayout.addWidget(MoveButton)
w.setCentralWidget(MainWindow)
w.show()
app.exec()
解决方案
您需要澄清它是一个全局变量。
您可以通过添加来做到这一点
def UpdateYY(y):
global YY # This will tell python it should use the global scope of YY
YY = y
print(YY)
推荐阅读
- python - 时间优化在Python中将数组写入文件
- facebook-opengraph - drupal 8 在 facebook 上共享图像时出错
- image-processing - 使用 ImageJ 从合并的堆栈创建新的图像堆栈
- apache-spark - 了解 Spark 的度量方法
- python-3.x - 将 BASH 函数参数中的变量传递给 Python 函数,并将 Python 函数输出传递回原始 BASH 函数
- javascript - 有没有办法缩短这个 JavaScript 代码?使用 .pop() 方法后返回数组
- android - 如何修复 RecyclerView 中的滚动定位问题
- ios - 如何在 UICollectionView 中的 cellForItemAt 内创建/调用函数
- python - Azure 函数 - 到 Excel 的 Pandas 数据框为空
- reactjs - 反应简单的选择面板应用程序,无需外部模块