我正在创建一个程序,其中需要一个透明的小部件。换句话说,我希望当我把透明的dock_1拖到dock_2上时,我能看到这两个。现在的问题是,当我试图设置窗口不透明度时,它是为整个程序设置的。 简言之,我如何创建一个按钮X,使dock_1透明,然后当我拖动该按钮到dock_2时,我能够看到这两个表? 代码: main.py
class MyWindow(QMainWindow):
def __init__(self, parent=None):
super(MyWindow, self).__init__(parent)
self.title = "Test 2"
self.top = 50
self.left = 5
self.width = 200
self.height = 120
self.setWindowTitle(self.title)
self.setGeometry(self.left, self.top, self.width, self.height)
self.MyWidget()
self.show()
def MyWidget(self):
self.addDockWidget(Qt.BottomDockWidgetArea, MainDock2.dock_0_2(self))
self.addDockWidget(Qt.TopDockWidgetArea, MainDock2.dock_1(self))
self.addDockWidget(Qt.BottomDockWidgetArea, MainDock2.dock_2(self))
def Btn_clicked(self) :
#self.setAttribute(Qt.WA_TranslucentBackground, True)
#self.setAttribute(Qt.WA_NoSystemBackground, False)
if self.sender().text() == "Make the background transparent ?":
self.btn.setText("Return the background back.")
self.btn.setStyleSheet("""QPushButton { color:#fff; background-color:#000;font-size:10px;}""")
self.setWindowOpacity(0.5)
else:
self.btn.setText("Make the background transparent ?")
self.btn.setStyleSheet("""QPushButton {color: #000; font-size: 10px;}""")
self.setWindowOpacity(1.0)
if __name__ == '__main__':
App = QtWidgets.QApplication(sys.argv)
Window = MyWindow()
sys.exit(App.exec())
MainDock2.py
def dock_0_2(self):
self.dock0 = QDockWidget("Transparent1", self)
self.wid = QWidget(self)
g = QGridLayout()
self.btn = QtWidgets.QPushButton("Make the background transparent ?")
self.btn.setStyleSheet("""QPushButton { color : #000; font-size: 10px;}""")
g.addWidget(self.btn)
self.btn.clicked.connect(self.Btn_clicked)
self.wid.setLayout(g)
self.dock0.setWidget(self.wid)
return self.dock0
def dock_1(self):
self.dock1 = QDockWidget("Row 2", self)
self.tableView1 = QTableWidget(self)
self.tableView1.setRowCount(1)
self.tableView1.setColumnCount(6)
self.tableView1.setFixedHeight(50)
self.tableView1.verticalHeader().setSectionResizeMode(QHeaderView.Stretch)
self.tableView1.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
labels = ['A', 'B', 'C', 'D', 'E', 'F']
self.tableView1.setHorizontalHeaderLabels(labels)
self.dock1.setWidget(self.tableView1)
self.dock1.setFeatures(QDockWidget.DockWidgetFloatable|QDockWidget.DockWidgetMovable)
return self.dock1
def dock_2(self):
self.dock2 = QDockWidget("Row 2", self)
self.tableView2 = QTableWidget(self)
self.tableView2.setRowCount(1)
self.tableView2.setColumnCount(6)
self.tableView2.setFixedHeight(50)
self.tableView2.verticalHeader().setSectionResizeMode(QHeaderView.Stretch)
self.tableView2.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
labels = ['A', 'B', 'C', 'D', 'E', 'F']
self.tableView2.setHorizontalHeaderLabels(labels)
self.dock2.setWidget(self.tableView2)
self.dock2.setFeatures(QDockWidget.DockWidgetFloatable|QDockWidget.DockWidgetMovable)
return self.dock2
目前没有回答
相关问题 更多 >
编程相关推荐