Kivy Python 中的弹出窗口 - 显示在前面

Posted

技术标签:

【中文标题】Kivy Python 中的弹出窗口 - 显示在前面【英文标题】:Popup in Kivy Python - show in front 【发布时间】:2017-02-01 16:33:52 【问题描述】:
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.popup import Popup
from kivy.uix.label import Label
from kivy.uix.stacklayout import StackLayout
from kivy.uix.modalview import ModalView
from kivy.config import Config
from ai import Ai
from random import randint

class TicTacToe(StackLayout): #StackLayout explanation: https://kivy.org/docs/api-kivy.uix.stacklayout.html

    states = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    choices = ["X","O"]

    def __init__(self, **kwargs):
        super(TicTacToe, self).__init__(**kwargs)
        self.init_players();

        for x in range(9): # range() explanation: http://pythoncentral.io/pythons-range-function-explained/
            bt = Button(text=' ', font_size=200, width=200, height=200, size_hint=(None, None), id=str(x+1))
            bt.bind(on_release=self.btn_pressed)
            self.add_widget(bt)

        view = ModalView(auto_dismiss=False)
        view.add_widget(Label(text='Hello world'))
        view.open()

    def init_players(self):
        rand_choice = randint(0,1);
        self.bot = Ai(self.choices[rand_choice]);
        self.player = self.choices[0] if rand_choice == 1 else self.choices[1]

    def btn_pressed(self, button):
        button.text="X"
        self.states[int(button.id)-1] = "X"
        print(self.states)

class MyApp(App):

    title = 'Tic Tac Toe'

    def build(self):
        Config.set('graphics', 'width', '600')
        Config.set('graphics', 'height', '600')
        return TicTacToe()



if __name__ == '__main__':
    MyApp().run()

这是我的简单代码,我想要做的是,而不是 ModalView 有一个弹出窗口说“你好,你用 X 开始了这个游戏”。问题是当我使用 Popup(也使用 ModalView)时,窗口显示在每个按钮后面。当我点击后调用弹出窗口时,弹出窗口显示正确,但我想在窗口初始化时执行此操作。

【问题讨论】:

您希望您的弹出窗口在应用启动时显示? 没错,这就是我想要的 【参考方案1】:

我建议您在打开视图后直接打开弹出窗口

view = ModalView(auto_dismiss=False)
view.add_widget(Label(text='Hello world'))
view.open()

popup = Popup(
    title=title,
    content=content,
    auto_dismiss=True)

popup.open()

【讨论】:

我让它在 on_start() 方法中工作,而不是在 build() 方法中。 也许你可以在这里帮忙? ***.com/questions/39668662/…

以上是关于Kivy Python 中的弹出窗口 - 显示在前面的主要内容,如果未能解决你的问题,请参考以下文章

更改 Kivy 中的弹出文本

kivy:带有进度条的弹出窗口

Kivy 如何创建一个可根据内容调整大小的弹出窗口?

python中的Kivy弹出窗口,按钮上有多个on_release操作

在 Kivy 中,如何使用另一个类的关闭按钮关闭弹出窗口?

Kivy:弹出窗口只能有一个小部件作为内容(当我导入两个不同的弹出模块时)