当根窗口调整大小时,我的弹出窗口中的窗口小部件没有调整大小。弹出窗口和弹出窗口上的标签保持原样。它与弹出窗口本身的size_hint和大小有关吗?这些小部件(图标)似乎独立于弹出窗口。
主文件
from kivy.app import App
from kivy.uix.screenmanager import Screen
from kivy.uix.button import ButtonBehavior
from kivy.uix.image import Image
from kivy.properties import StringProperty, ObjectProperty,NumericProperty
from kivy.uix.popup import Popup
from kivy.uix.floatlayout import FloatLayout
class MainScreen(Screen, FloatLayout):
mantra_text = ObjectProperty(None)
def printMantra(self):
print(self.ids.mantra_text.text)
def icon_popup(self):
popup = Popup(title="Profile Icon", content=Popup_Content(), size_hint=(None, None), size=(300, 200))
popup.open()
class Popup_Content(FloatLayout):
pass
class ImageButton(ButtonBehavior, Image):
pass
class MainApp(App):
def build(self):
return MainScreen()
def set_profile_icon(self, image):
self.root.ids.profile_icon.source = image.source
print(image)
#print(self.root.ids.profile_icon)
MainApp().run()
奇异果文件
#:import utils kivy.utils
<MainScreen>
Popup_Content:
id: popup_content
FloatLayout:
canvas:
Color:
rgb: utils.get_color_from_hex("#ffbb99")
Rectangle:
pos: self.pos
size: self.size
GridLayout:
cols: 2
pos_hint: {"x":0.6, "top":1}
size_hint: 0.4,0.2
spacing_horizontal: [0.9*root.width]
Label:
text: "Name"
ImageButton:
id: profile_icon
source: "profile_icon"
on_release: root.icon_popup()
Label:
text: mantra_text.text
pos_hint: {"x":0, "top":0.8}
size_hint: 1, 0.2
text_size: self.size
halign: "center"
font_size: 25
TextInput:
id: mantra_text
pos_hint: {"x": 0.15, "top":0.6}
size_hint: 0.7, 0.1
#text_size: self.size
Label:
text: "Time"
pos_hint: {"x":0.3, "top":0.6}
size_hint: 0.4, 0.2
text_size: self.size
halign: "left"
font_size: 30
Button:
text: "Time"
pos_hint: {"x":0.3, "top":0.5}
size_hint: 0.4, 0.2
on_release: root.printMantra()
<Popup_Content>
#profile_icon: profile_icon
FloatLayout:
GridLayout:
cols: 5
pos_hint: {"x":0.95, "y":1.6}
ImageButton:
id: man_01
source: "icons/male_icon_01.png"
on_release: app.set_profile_icon(man_01)
ImageButton:
id: man_02
source: "icons/male_icon_02.png"
on_release: app.set_profile_icon(man_02)
ImageButton:
source: "icons/male_icon_01.png"
on_release: app.set_profile_icon()
ImageButton:
source: "icons/male_icon_01.png"
on_release: app.set_profile_icon()
ImageButton:
source: "icons/male_icon_01.png"
on_release: app.set_profile_icon()
ImageButton:
id: female_01
source: "icons/female_icon_01.png"
on_release: app.set_profile_icon(female_01)
答案 0 :(得分:1)
如果您希望<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="">
<title>California Cafe Directory</title>
<link rel="stylesheet" href="bootstrap.css">
<link rel="stylesheet" href="page.css">
</head>
<body>
<div class="container-fluid">
<div class="row">
<div class="col-12" id="header-wrapper">
<div class="container">
<div class="row">
<div class="col-12" id="header">
<h2>California Cafe Directory</h2>
</div>
<div class="col-12" id="search-wrapper">
<input id="search" type="text" oninput="searching()" placeholder="Search your favorite cafes!">
</div>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-12" id="table-wrapper">
<table>
<thead>
<tr class="table100-head">
<th class="column1">S No</th>
<th class="column2">Cafe Name</th>
<th class="column3">Address</th>
<th class="column4">Postal Code</th>
<th class="column5">Lat</th>
<th class="column6">Long</th>
</tr>
</thead>
<tbody id="myTBD">
<tr>
<td class="column1">1</td>
<td class="column2"><span id="col2"></span></td>
<td class="column3">45250 Worth Avenue, Unit A</td>
<td class="column4">201619</td>
<td class="column5">36.1152</td>
<td class="column6">117.521</td>
</tr>
<tr>
<td class="column1">2</td>
<td class="column2">Bazaar Cafe</td>
<td class="column3">45250 Worth Avenue, Unit A</td>
<td class="column4">201619</td>
<td class="column5">36.1152</td>
<td class="column6">117.521</td>
</tr>
<tr>
<td class="column1">3</td>
<td class="column2">Bazaar Cafe</td>
<td class="column3">45250 Worth Avenue, Unit A</td>
<td class="column4">201619</td>
<td class="column5">36.1152</td>
<td class="column6">117.521</td>
</tr>
<tr>
<td class="column1">4</td>
<td class="column2">Bazaar Cafe</td>
<td class="column3">45250 Worth Avenue, Unit A</td>
<td class="column4">201619</td>
<td class="column5">36.1152</td>
<td class="column6">117.521</td>
</tr>
<tr>
<td class="column1">5</td>
<td class="column2">Bazaar Cafe</td>
<td class="column3">45250 Worth Avenue, Unit A</td>
<td class="column4">201619</td>
<td class="column5">36.1152</td>
<td class="column6">117.521</td>
</tr>
<tr>
<td class="column1">6</td>
<td class="column2">Bazaar Cafe</td>
<td class="column3">45250 Worth Avenue, Unit A</td>
<td class="column4">201619</td>
<td class="column5">36.1152</td>
<td class="column6">117.521</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
</div>
<script src="solution.js"></script>
</body>
</html>
在调整Popup
的大小时更改大小,请使用App
。像这样:
size_hint
使用popup = Popup(title="Profile Icon", content=Popup_Content(), size_hint=(0.5, 0.5))
会将size_hint=(None, None), size=(300, 200)
的大小强制为Popup
,而与(300, 200)
的大小无关。
要使MainScreen
Popup
跟随content
,可以使用Popup
。在RelativeLayout
的{{3}}中,它表示:
将位置=(0,0)的小部件添加到RelativeLayout时, 当RelativeLayout的位置为 改变了。子窗口小部件坐标始终保持(0,0) 相对于父级布局。
因此,如果您将RelativeLayout
定义为Popup_Content
,那么RelativeLayout
将紧随其后。我建议将GridLayout
定义为:
Popup_Content
然后,在class Popup_Content(RelativeLayout):
pass
中:
kv