gpt4 book ai didi

python - 按钮重叠复选框文本

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

我尝试在 PyQt 中编写一个界面,用户可以在其中选中复选框,然后单击按钮来处理他们的选择。但是,我遇到了一些麻烦,因为按钮与复选框标签重叠。这是一个更简单的代码来向您展示我的问题:

from PyQt5.QtWidgets import QMainWindow, QApplication, QPushButton, QWidget, QTabWidget, QVBoxLayout, QGridLayout, \
QCheckBox, QHBoxLayout
import sys


class App(QMainWindow):

def __init__(self):
super().__init__()
self.title = 'PyQt5 tabs - pythonspot.com'
self.left = 0
self.top = 0
self.width = 300
self.height = 200
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)

self.table_widget = MyTableWidget(self)
self.setCentralWidget(self.table_widget)

self.show()


class MyTableWidget(QWidget):

def __init__(self, parent):
super(QWidget, self).__init__(parent)
self.layout = QVBoxLayout(self)

# Initialize tab screen
self.tabs = QTabWidget()
self.tab2 = QWidget()
self.tabs.resize(300, 200)
self.checkbox_states = {}

# Add tabs
self.tabs.addTab(self.tab2, "Tab 2")

# Create first tab
self.tab2.layout = QGridLayout()
checkbox_layout = QVBoxLayout()
self.checkbox_states["Haar"] = QCheckBox("small")
self.checkbox_states["db"] = QCheckBox("small")
self.checkbox_states["sym"] = QCheckBox("small")
self.checkbox_states["coif"] = QCheckBox("very very very very long")

for key, l in self.checkbox_states.items():
l.setChecked(False)
checkbox_layout.addWidget(l)

process_button_layout = QHBoxLayout()
self.process_wavelet = QPushButton("Process")
process_button_layout.addWidget(self.process_wavelet)
# QObject.connect(self.process_wavelet, SIGNAL('clicked()'), self._on_process_wavelet)

self.tab2.layout.addLayout(checkbox_layout, 0, 0, 0, 0)
self.tab2.layout.addLayout(process_button_layout, 1, 1, 1, 1)
self.tab2.setLayout(self.tab2.layout)

# Add tabs to widget
self.layout.addWidget(self.tabs)
self.setLayout(self.layout)


if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())

有没有人知道如何抑制这个重叠的问题?谢谢 !

编辑 :

我想要这样的东西:

enter image description here

这里的文字要小得多,我没有重叠的问题。只有当我们用更长的字符串替换最后一个复选框的标签时才会出现。

最佳答案

OP 想要的东西可以从很多方面获得,这取决于当窗口大小改变时他希望元素的几何形状如何表现。因此,由于没有比它显示的图像更多的限制,它将使用 QGridLayout 提供一个可能的解决方案,其中 QCheckBox 将放置在第一列中,在第二列和最后一个文件中放置 QPushButton:

class MyTableWidget(QWidget):
def __init__(self, parent):
super(QWidget, self).__init__(parent)
layout = QVBoxLayout(self)

self.tabs = QTabWidget()
self.tabs.resize(300, 200)

layout.addWidget(self.tabs)

self.tab2 = QWidget()
self.tabs.addTab(self.tab2, "Tab 2")

lay = QGridLayout(self.tab2)

self.checkbox_states = {}
for i, (key, text) in enumerate(
(
("Haar", "small"),
("db", "small"),
("sym", "small"),
("coif", "very very very very long"),
)
):
checkbox = QCheckBox(text)
checkbox.setChecked(False)
lay.addWidget(checkbox, i, 0)
self.checkbox_states[key] = checkbox

self.process_wavelet = QPushButton("Process")
lay.addWidget(self.process_wavelet, i, 1)

enter image description here

关于python - 按钮重叠复选框文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59828635/

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