Pyqt5中调用Update()方法控件内容依旧不刷新的解决办法

Pyqt5中调用Update()方法控件内容依旧不刷新的解决办法

问题

今天在使用pyqt中的update()更新tableWidget时,发现无论怎样控件的内容依旧不是最新的。具体代码如下

ui.tableWidget.update()

解决办法

将控件直接的update(),修改为对viewport()update()
具体如下:

ui.tableWidget.viewport().update()

具体原理

直接对控件update()是更新这个控件
而对viewport().update()是更新这个控件里面的内容

具体可以参考
https://forum.qt.io/topic/10090/solved-qtablewidget-is-not-getting-refreshed-automatically

PyQt5,如果你想动态地改变控件的居位置,通常你会监听某个事件或者定时器,当需要改变位置时,再次按照上述步骤计算新的心点,并调用`setGeometry()`方法更新控件的位置。这里有一个简单例子,假设你有一个按钮,每间隔一定时间随机更改其位置: ```python import sys from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QTimer from PyQt5.QtCore import Qt, QRect class DynamicPositionButton(QWidget): def __init__(self): super().__init__() self.button = QPushButton("动态位置按钮") self.timer = QTimer(self) self.timer.timeout.connect(self.update_button_position) self.init_ui() def init_ui(self): layout = QVBoxLayout() layout.addWidget(self.button) self.setLayout(layout) def update_button_position(self): # 获取屏幕尺寸 screen = QApplication.desktop().screenGeometry() width, height = self.button.geometry().width(), self.button.geometry().height() # 随机生成新位置,保持在屏幕内 x = Qrand() % (screen.width() - width) y = Qrand() % (screen.height() - height) # 更新控件位置 new_pos = QRect(x, y, width, height) self.button.setGeometry(new_pos) # 初始化应用 if __name__ == "__main__": app = QApplication(sys.argv) dynamic_button = DynamicPositionButton() dynamic_button.show() # 每隔0.5秒更新一次位置 dynamic_button.timer.start(500) # 使用毫秒为单位 sys.exit(app.exec_()) ``` 这个例子,我们创建了一个定时器,每0.5秒触发一次`update_button_position`方法,该方法会随机生成一个新的屏幕内的位置,然后更新按钮的几何位置。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值