移动窗体上的按钮
To move a qbutton on a form
我从 Qbutton 构建了自己的按钮 class 并想在我的表单上安排一批我的按钮。问题是它们只是显示在我表单的右下角——完全忽略我的 "move" 方法。 (Python 3 + Qt5) 谢谢!
Blist = [
["Quit",1250,750],
["LoadAny",1250,850]
]
class lb(QPushButton):
def __init__(self, t, parent=None):
QPushButton.__init__(self, t, parent)
self.setText(t.split("_")[1])
self.setFixedHeight(ButtonH)
self.setFixedWidth(ButtonW)
self.setStyleSheet("background-color:white;")
self.setObjectName(t.split("_")[0])
self.setFont(QFont("Times", 12, QFont.StyleNormal))
class MyWindow(QWidget):
…
buttons = {}
self.layout = QVBoxLayout(self)
for i in range(len(Blist)):
buttons[i] = lb('%d_%s' %(i,Blist[i][0]))
self.layout.addWidget(buttons[i])
buttons[i].move(Blist[i][1],Blist[i][2])
buttons[i].clicked.connect(self.bclick)
当您将小部件添加到布局时,它负责管理位置策略,在您的情况下,您已将它们添加到 QVBoxLayout,因此它们将垂直分布:
如果你想添加它并且你可以自由移动它不使用布局,你必须作为父级传递给你想要放置它的小部件,因为它会被放置在上角但是现在如果您可以使用 move()
函数:
Blist = [
["Quit",50,250],
["LoadAny",250,350]
]
ButtonH = 40
ButtonW = 80
class lb(QPushButton):
def __init__(self, t, parent=None):
QPushButton.__init__(self, t, parent)
self.setText(t.split("_")[1])
self.setFixedHeight(ButtonH)
self.setFixedWidth(ButtonW)
self.setStyleSheet("background-color:white;")
self.setObjectName(t.split("_")[0])
self.setFont(QFont("Times", 12, QFont.StyleNormal))
class MyWindow(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
buttons = {}
#self.layout = QVBoxLayout(self)
for i in range(len(Blist)):
buttons[i] = lb('%d_%s' %(i,Blist[i][0]), self)
#self.layout.addWidget(buttons[i])
buttons[i].move(Blist[i][1],Blist[i][2])
buttons[i].clicked.connect(self.bclick)
def bclick(self):
print("click")
我从 Qbutton 构建了自己的按钮 class 并想在我的表单上安排一批我的按钮。问题是它们只是显示在我表单的右下角——完全忽略我的 "move" 方法。 (Python 3 + Qt5) 谢谢!
Blist = [
["Quit",1250,750],
["LoadAny",1250,850]
]
class lb(QPushButton):
def __init__(self, t, parent=None):
QPushButton.__init__(self, t, parent)
self.setText(t.split("_")[1])
self.setFixedHeight(ButtonH)
self.setFixedWidth(ButtonW)
self.setStyleSheet("background-color:white;")
self.setObjectName(t.split("_")[0])
self.setFont(QFont("Times", 12, QFont.StyleNormal))
class MyWindow(QWidget):
…
buttons = {}
self.layout = QVBoxLayout(self)
for i in range(len(Blist)):
buttons[i] = lb('%d_%s' %(i,Blist[i][0]))
self.layout.addWidget(buttons[i])
buttons[i].move(Blist[i][1],Blist[i][2])
buttons[i].clicked.connect(self.bclick)
当您将小部件添加到布局时,它负责管理位置策略,在您的情况下,您已将它们添加到 QVBoxLayout,因此它们将垂直分布:
如果你想添加它并且你可以自由移动它不使用布局,你必须作为父级传递给你想要放置它的小部件,因为它会被放置在上角但是现在如果您可以使用 move()
函数:
Blist = [
["Quit",50,250],
["LoadAny",250,350]
]
ButtonH = 40
ButtonW = 80
class lb(QPushButton):
def __init__(self, t, parent=None):
QPushButton.__init__(self, t, parent)
self.setText(t.split("_")[1])
self.setFixedHeight(ButtonH)
self.setFixedWidth(ButtonW)
self.setStyleSheet("background-color:white;")
self.setObjectName(t.split("_")[0])
self.setFont(QFont("Times", 12, QFont.StyleNormal))
class MyWindow(QWidget):
def __init__(self, parent=None):
QWidget.__init__(self, parent)
buttons = {}
#self.layout = QVBoxLayout(self)
for i in range(len(Blist)):
buttons[i] = lb('%d_%s' %(i,Blist[i][0]), self)
#self.layout.addWidget(buttons[i])
buttons[i].move(Blist[i][1],Blist[i][2])
buttons[i].clicked.connect(self.bclick)
def bclick(self):
print("click")