pyqt5中,有多个按钮并超过了ui界面,如何用 slider 控制? | 您所在的位置:网站首页 › pyqt5添加按钮 › pyqt5中,有多个按钮并超过了ui界面,如何用 slider 控制? |
在使用 PyQt5 进行界面设计时,如果有多个按钮超过了 UI 界面的宽度,并且需要使用滑条(Slider)来控制按钮的显示,可以按照以下步骤进行: 在 UI 界面上添加一个水平滑条(QSlider)和一个容器(例如 QWidget)用于包含按钮。 将容器设置为水平布局(QHBoxLayout),并将按钮添加到容器中。在添加按钮时,可以设置按钮的固定宽度(例如设置为 100px)。 将滑条的范围设置为按钮的总宽度减去 UI 界面的宽度。可以通过 slider.setMaximum(total_width - ui_width) 来设置滑条的最大值。 在滑条的 valueChanged 信号的槽函数中,根据滑条的值来调整容器的水平偏移,从而实现按钮的滑动效果。可以通过 container.move(-slider.value(), 0) 来设置容器的偏移量。 最后,将滑条添加到 UI 界面的适当位置,并设置合适的样式和布局。 以下是一个简单的示例代码,演示如何在 PyQt5 中使用滑条控制按钮的显示: from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QPushButton, QSlider from PyQt5.QtCore import Qt class ButtonSlider(QWidget): def __init__(self): super(ButtonSlider, self).__init__() # 设置 UI 界面 self.ui_width = 500 self.container = QWidget(self) self.container.setGeometry(0, 50, self.ui_width, 50) self.container.setStyleSheet('background-color: lightgray;') self.container_layout = QHBoxLayout(self.container) self.container_layout.setSpacing(0) self.container_layout.setContentsMargins(0, 0, 0, 0) # 添加按钮 button_count = 20 button_width = 100 for i in range(button_count): button = QPushButton(f'Button {i+1}', self.container) button.setFixedWidth(button_width) self.container_layout.addWidget(button) # 添加滑条 self.slider = QSlider(Qt.Horizontal, self) self.slider.setGeometry(0, 0, self.ui_width, 30) self.slider.setMaximum(button_count * button_width - self.ui_width) self.slider.valueChanged.connect(self.on_slider_value_changed) def on_slider_value_changed(self, value): self.container.move(-value, 0) if __name__ == '__main__': app = QApplication([]) window = ButtonSlider() window.setGeometry(100, 100, 500, 100) window.show() app.exec_() 上述代码创建了一个 UI 界面,包含了一个容器用于包含多个按钮,并在界面底部添加了一个滑条。当滑条的值发生变化时,会调整容器的水平偏移,从而实现按钮的滑动效果,使得超出 UI 界面宽度的按钮可以通过滑条来控制显示。 |
CopyRight 2018-2019 实验室设备网 版权所有 |