[英]Kivy: Popup can have only one widget as content (When I import two different popup modules)
我正在使用 kivy 設計一個應用程序,我需要兩個不同的彈出窗口小部件。 我使用“kv”語言設計它們。 當我在我的項目文件中導入這些 Popup 模塊時,它拋出:
'彈出窗口只能有一個小部件作為內容'
這是我的項目文件。
import kivy
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from myPopups.Popup1 import Popup1Window
from myPopups.Popup2 import Popup2Window
Builder.load_file('project.kv')
class ProjectWindow(BoxLayout):
def __init__(self, **kwargs):
super().__init__(**kwargs)
self.mypopup1 = Popup1Window()
self.mypopup2 = Popup2Window()
popup1.kv 文件
<Popup>:
size_hint: 0.4,0.5
auto_dismiss:True
title: 'Popup 1'
id:mypopup1
orientation: "vertical"
BoxLayout:
id: header1
orientation:'vertical'
size_hint_y:1
size_hint_x:1
padding:3
canvas.before:
Color:
rgba:(.06,.35,.45,1)
BoxLayout:
id:text_box1
size_hint_y:None
size_hint_x:1
height:60
TextInput:
id:txt_qty1
text:''
multiline:False
halign: 'center'
valign: 'middle'
font_size:30
GridLayout:
id:popup_numpad1
size_hint_y:None
size_hint_x:1
# spacing:'3'
height:230
rows:4
cols:3
spacing:4
Button:
text: 'Popup 1 Button'
bold:True
font_size:17
background_normal:''
background_color:(.06,.45,.45,1)
Popup1.py 文件
import kivy
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.popup import Popup
from kivy.uix.gridlayout import GridLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
Builder.load_file('myPopus/popup1.kv')
class Popup1Window(Popup):
def __init__(self, **kwargs):
super().__init__(**kwargs)
print("This is Popup 1")
同樣,Popup2.kv 文件
<Popup>:
size_hint: 0.4,0.5
auto_dismiss:True
title: 'Popup 2'
id:mypopup2
orientation: "vertical"
BoxLayout:
id: header2
orientation:'vertical'
size_hint_y:1
size_hint_x:1
padding:3
canvas.before:
Color:
rgba:(.06,.35,.45,1)
BoxLayout:
id:text_box2
size_hint_y:None
size_hint_x:1
height:60
TextInput:
id:txt_qty2
text:''
multiline:False
halign: 'center'
valign: 'middle'
font_size:30
GridLayout:
id:popup_numpad2
size_hint_y:None
size_hint_x:1
# spacing:'3'
height:230
rows:4
cols:3
spacing:4
Button:
text: 'Popup 2 Button'
bold:True
font_size:17
background_normal:''
background_color:(.06,.45,.45,1)
Popup2.py 文件
import kivy
from kivy.app import App
from kivy.lang import Builder
from kivy.uix.popup import Popup
from kivy.uix.gridlayout import GridLayout
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
Builder.load_file('myPopus/popup2.kv')
class Popup2Window(Popup):
def __init__(self, **kwargs):
super().__init__(**kwargs)
print("This is Popup 2")
請在這方面幫助我。 謝謝。
每個kv
文件都包含一個<Popup>
規則。 當加載第二個kv
文件時,第二個<Popup>
規則的內容被添加到第一個,從而導致<Popup>
的最終規則有兩個子項用於Popup
。 當您為類加載規則(如<Popup>
)時,它適用於加載kv
后在您的App
中創建的所有Popup
實例。 通常,如果您希望將不同的規則應用於不同的Popup
實例,您可以使用Popup
子類(如您Popup
),並為每個子類加載不同的規則。
您可能希望將Popup1.kv
的規則Popup1.kv
為<Popup1Window>
,類似地,將Popup2.kv
的規則更改為<Popup2Window>
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.