raise_() 函数被忽略
raise_() function ignored
我是 python 的新手,我正在尝试使用 PyQt5 重写 GUI。我制作的 GUI 是用 Tkinter 编写的。我正在使用 frames 来调出不同的页面。使用 Tkinter,我成功地使用 tkraise() 函数将页面放在最前面。但是对于 PyQt5,该函数似乎被忽略了。
该文件是一个测试文件,在将其添加到我的主文件之前,我尝试了不同的操作。
在 Dothing 函数中,我添加了一个 print("yes") 函数来查看它是否进入了函数并且它确实进入了,但它没有使用 raise_() 以某种方式起作用。
任何人都可以向我解释我做错了什么,或者可以给我一个 link 地址以获取更多信息,以便我自己搜索。我已经在QT和其他论坛的网站上看了,但我找不到答案。
我的文件如下所示:
import sys
from PyQt5.QtWidgets import (QWidget, QGridLayout, QPushButton, QApplication, QFrame, QLabel, QColorDialog)
from PyQt5.QtGui import (QColor)
Lijst = ["Ferri", "Yvonne", "Ineke"] # , "Sidneger", "Deniel", "Tobie", "Nicol"
class Test(QWidget):
def __init__(self, *args, **kwargs):
super().__init__()
self.List = [(255,0,0), (0,255,0), (0,0,255)]
# self.List = Lijst
# container = QFrame(self)
self.setGeometry(300,300,300,300)
self.Frames = {}
for F in (self.List):
selected_color = QColor(F[0],F[1],F[2])
self.frame = QFrame(self)
self.frame.setStyleSheet("QWidget { background-color: %s}" % selected_color.name())
self.frame.setGeometry(100, 0, 300, 300)
Framas = Pages(self.frame, self, selected_color)
self.Frames[F] = Framas
def DoThing(self):
self.Frames[(255, 0, 0)].raise_()
print("yes")
pass
def DoThing2(self):
self.Frames[(0, 255, 0)].raise_()
pass
def DoThing3(self):
self.Frames[(0, 0, 255)].raise_()
pass
class Pages(QFrame):
def __init__(self, parent, controller, selected_color, *args, **kwargs):
super().__init__()
self.controller = controller
self.frame = parent
self.button = QPushButton("Change", self.frame) # adding frame as parent
self.button.move(10, 10)
self.button.clicked.connect(self.controller.DoThing)
self.button2 = QPushButton("Change2", self.frame)
self.button2.move(10, 50)
self.button2.clicked.connect(self.controller.DoThing2)
self.button3 = QPushButton("Change3", self.frame)
self.button3.move(10, 90)
self.button3.clicked.connect(self.controller.DoThing3)
if __name__ == '__main__':
app = QApplication(sys.argv)
Test_window = Test()
Test_window.show()
sys.exit(app.exec_())
拥有原始代码的来源很难确切知道您需要什么。所以我会尽力帮助你。
首先,您必须只使用一个 QFrame
,每次迭代都会创建 2 个:您设置颜色的 QFrame
,另一个页面。
其次,您在页面上使用 raise_()
,因为您将页面添加到字典中,但页面没有颜色,但另一个 QFrame
.
import sys
from PyQt5.QtWidgets import (QWidget, QPushButton, QApplication, QFrame)
from PyQt5.QtGui import (QColor)
class Test(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setGeometry(300,300,300,300)
colors = [(255,0,0), (0,255,0), (0,0,255)]
self.Frames = {}
for F in colors:
selected_color = QColor(*F)
frame = Pages(parent=self, controller=self)
frame.setStyleSheet("QWidget { background-color: %s}" % selected_color.name())
frame.setGeometry(100, 0, 300, 300)
self.Frames[F] = frame
def DoThing(self):
self.Frames[(255, 0, 0)].raise_()
def DoThing2(self):
self.Frames[(0, 255, 0)].raise_()
def DoThing3(self):
self.Frames[(0, 0, 255)].raise_()
class Pages(QFrame):
def __init__(self, parent, controller):
super().__init__(parent)
self.controller = controller
self.button = QPushButton("Change", self) # adding frame as parent
self.button.move(10, 10)
self.button.clicked.connect(self.controller.DoThing)
self.button2 = QPushButton("Change2", self)
self.button2.move(10, 50)
self.button2.clicked.connect(self.controller.DoThing2)
self.button3 = QPushButton("Change3", self)
self.button3.move(10, 90)
self.button3.clicked.connect(self.controller.DoThing3)
if __name__ == '__main__':
app = QApplication(sys.argv)
Test_window = Test()
Test_window.show()
sys.exit(app.exec_())
我是 python 的新手,我正在尝试使用 PyQt5 重写 GUI。我制作的 GUI 是用 Tkinter 编写的。我正在使用 frames 来调出不同的页面。使用 Tkinter,我成功地使用 tkraise() 函数将页面放在最前面。但是对于 PyQt5,该函数似乎被忽略了。
该文件是一个测试文件,在将其添加到我的主文件之前,我尝试了不同的操作。 在 Dothing 函数中,我添加了一个 print("yes") 函数来查看它是否进入了函数并且它确实进入了,但它没有使用 raise_() 以某种方式起作用。
任何人都可以向我解释我做错了什么,或者可以给我一个 link 地址以获取更多信息,以便我自己搜索。我已经在QT和其他论坛的网站上看了,但我找不到答案。
我的文件如下所示:
import sys
from PyQt5.QtWidgets import (QWidget, QGridLayout, QPushButton, QApplication, QFrame, QLabel, QColorDialog)
from PyQt5.QtGui import (QColor)
Lijst = ["Ferri", "Yvonne", "Ineke"] # , "Sidneger", "Deniel", "Tobie", "Nicol"
class Test(QWidget):
def __init__(self, *args, **kwargs):
super().__init__()
self.List = [(255,0,0), (0,255,0), (0,0,255)]
# self.List = Lijst
# container = QFrame(self)
self.setGeometry(300,300,300,300)
self.Frames = {}
for F in (self.List):
selected_color = QColor(F[0],F[1],F[2])
self.frame = QFrame(self)
self.frame.setStyleSheet("QWidget { background-color: %s}" % selected_color.name())
self.frame.setGeometry(100, 0, 300, 300)
Framas = Pages(self.frame, self, selected_color)
self.Frames[F] = Framas
def DoThing(self):
self.Frames[(255, 0, 0)].raise_()
print("yes")
pass
def DoThing2(self):
self.Frames[(0, 255, 0)].raise_()
pass
def DoThing3(self):
self.Frames[(0, 0, 255)].raise_()
pass
class Pages(QFrame):
def __init__(self, parent, controller, selected_color, *args, **kwargs):
super().__init__()
self.controller = controller
self.frame = parent
self.button = QPushButton("Change", self.frame) # adding frame as parent
self.button.move(10, 10)
self.button.clicked.connect(self.controller.DoThing)
self.button2 = QPushButton("Change2", self.frame)
self.button2.move(10, 50)
self.button2.clicked.connect(self.controller.DoThing2)
self.button3 = QPushButton("Change3", self.frame)
self.button3.move(10, 90)
self.button3.clicked.connect(self.controller.DoThing3)
if __name__ == '__main__':
app = QApplication(sys.argv)
Test_window = Test()
Test_window.show()
sys.exit(app.exec_())
拥有原始代码的来源很难确切知道您需要什么。所以我会尽力帮助你。
首先,您必须只使用一个 QFrame
,每次迭代都会创建 2 个:您设置颜色的 QFrame
,另一个页面。
其次,您在页面上使用 raise_()
,因为您将页面添加到字典中,但页面没有颜色,但另一个 QFrame
.
import sys
from PyQt5.QtWidgets import (QWidget, QPushButton, QApplication, QFrame)
from PyQt5.QtGui import (QColor)
class Test(QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.setGeometry(300,300,300,300)
colors = [(255,0,0), (0,255,0), (0,0,255)]
self.Frames = {}
for F in colors:
selected_color = QColor(*F)
frame = Pages(parent=self, controller=self)
frame.setStyleSheet("QWidget { background-color: %s}" % selected_color.name())
frame.setGeometry(100, 0, 300, 300)
self.Frames[F] = frame
def DoThing(self):
self.Frames[(255, 0, 0)].raise_()
def DoThing2(self):
self.Frames[(0, 255, 0)].raise_()
def DoThing3(self):
self.Frames[(0, 0, 255)].raise_()
class Pages(QFrame):
def __init__(self, parent, controller):
super().__init__(parent)
self.controller = controller
self.button = QPushButton("Change", self) # adding frame as parent
self.button.move(10, 10)
self.button.clicked.connect(self.controller.DoThing)
self.button2 = QPushButton("Change2", self)
self.button2.move(10, 50)
self.button2.clicked.connect(self.controller.DoThing2)
self.button3 = QPushButton("Change3", self)
self.button3.move(10, 90)
self.button3.clicked.connect(self.controller.DoThing3)
if __name__ == '__main__':
app = QApplication(sys.argv)
Test_window = Test()
Test_window.show()
sys.exit(app.exec_())