【问题标题】:Kivy Popup Shows Same Buttons as Main ScreenKivy 弹出窗口显示与主屏幕相同的按钮
【发布时间】:2021-02-06 17:57:37
【问题描述】:

我对 Kivy 很陌生(已经使用了大约四个小时......)而且我遇到了弹出窗口。

我有一个主屏幕,在浮动布局中有四个按钮。按下时,我希望“移动”按钮打开一个弹出窗口。现在我已经完成了这项工作,但弹出窗口包含与我的主屏幕相同的四个按钮。

这是我的 Python 代码:

def show_movepop():
    show = MovePop()
    movepopWindow = Popup(title="Move", content=show, size_hint=(None, None),size=(400,400))
    movepopWindow.open()
    
class MovePop(FloatLayout):
    pass

class MainWindow(Screen):
    def movebtn(self):
        show_movepop()

class StatsWindow(Screen):
    pass

class WindowManager(ScreenManager):
    pass

kv = Builder.load_file("gamegui.kv")
           
class MainFloatApp(App):
    def build(self):
        return kv
        
if __name__ == "__main__":
    MainFloatApp().run()

这是我的 .kv 文件:

WindowManager:
    MainWindow:
    StatsWindow:

<Button>
    font_size:40
    color:0.3,0.6,0.7,1
    size_hint: 0.5, 0.1

<MainWindow>:
    name: "mainscreen"

    FloatLayout
        Button:
            text: "MOVE"
            id: move
            pos_hint: {"x":0, "y":0.1}
            on_release: root.movebtn()
            
        Button:
            text: "ACTION"
            id: action
            pos_hint: {"x":0.5, "y":0.1}
        
        Button:
            text: "EXAMINE"
            id: examine
            pos_hint: {"x":0, "y":0}
        
        Button:
            text: "STATS"
            id: stats
            pos_hint: {"x":0.5, "y":0}
            on_release: 
                app.root.current = "statsscreen"
                root.manager.transition.direction = "left"

<StatsWindow>:
    name: "statsscreen"
    Button:
        text: "Back"
        on_release:
            app.root.current = "mainscreen"
            root.manager.transition.direction = "right"

<MovePop>:
    Button: 
        text: "!"
        pos_hint: {"x":0.1, "y":0.5}
        on_release:

如果以上内容超级脏,请提前道歉,我效率不高:')

感谢所有建议!

【问题讨论】:

  • 当我运行你的代码时,按下MOVE 按钮会显示一个Popup,只有一个按钮,上面有文字!
  • @JohnAnderson Whaaaat?!这正是我想要发生的!但是我在弹出窗口底部的主屏幕上得到了相同的四个按钮......知道可能导致这种情况的原因吗?
  • 不知道怎么会这样。

标签: python kivy kivy-language


【解决方案1】:

好吧,我不知道为什么,但问题是由 FloatLayout 引起的。

改变了

class MovePop(FloatLayout):
    pass

到:

class MovePop(AnchorLayout):
    pass

BoxLayout 也去掉了重复的按钮,但我无法按照我想要的布局方式排列弹出窗口上的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多