PyQt在全屏中向左布局中心元素

2021-12-01 12:16:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用PyQt构建一个简单的应用程序,在RPi显示器上运行。我也是PyQt的新手。所以,屏幕的尺寸不会改变。因此,在这种情况下,我对使用方框布局或根本不使用布局感到满意。但是,我想得到正确的结果。此应用程序不需要响应性或适应性或任何东西

以下是我迄今为止所做的:

class Window(QWidget):

    def __init__(self):
        super().__init__()

        self.setGeometry(0, 0, 1920, 1000)

        # layout for date & time display
        layout = QVBoxLayout()

        # to prevent unnecessary spacing in full screen
        layout.addStretch()

        self.time = QLabel("Loading", self)
        self.date = QLabel("Loading", self)
    
        self.time.setFont(QFont('Ubuntu', 180))
        self.date.setFont(QFont('Ubuntu', 50))

        layout.addWidget(self.time)
        layout.addWidget(self.date)

        self.setLayout(layout)

        timer = QTimer(self)
        timer.timeout.connect(self.showTime)
        timer.start(1000)

    # method called by timer
    def showTime(self):

        current_time = QDateTime.currentDateTime()

        # formatting date and time to string
        date_time = current_time.toString('dddd, MMMM d, yyyy')
        timer_time = current_time.toString('hh:mm AP')

        # setting date & time to the label
        self.time.setText(timer_time)
        self.date.setText(date_time)


App = QApplication(sys.argv)

window = Window()
window.setStyleSheet("background-color: black; color: white; QLabel { margin-bottom: 500 }")
window.show()

App.exit(App.exec_())

我也尽量不使用布局。通过使用class Window(QMainWindow)而不是QWidget。然后我尝试使用move()来正确定位日期和时间。但这会产生一个奇怪的输出,其中日期和时间都被限制在主窗口内的另一个小框中,并且没有完全显示出来

我想要的理想输出是将日期和时间以1920X1000大小显示在屏幕的左中部。我如何才能做到这一点

在Tkinter中,我可以使用grid()来实现这一点,这类似于:

time_label.grid(row = 0, column = 0, padx = 200, pady = (200, 0)) 
date_label.grid(row = 1, column = 0, padx = 200)

这就是最后一件事的样子。spotify和maps徽标是Tkinter中的按钮。任何帮助都将得到感谢和支持

Ideal Output