私はstackoverflowで似たような話題を見つけましたが、不都合にそれは私を助けませんでした。Kivy Pythonのドロップダウンメニュー
私は真剣にGUIをプログラミングしようとしていますが、私は本当に怒っています。 私は最終的に必要なものに向かって、一歩ずつ進んでいます。
私のウィジェットの左上隅に単純なドロップダウンメニューを追加しようとしています。私のウィジェットの要素は、選択されるたびに関数を呼び出す必要があります。私はkivyのドキュメンテーションでこれを実際に探しましたが、このフォーラムでは本当に解決できません。
import multiprocessing
from mesh import MeshApp
from kivy.app import App
from kivy.uix.widget import Widget
from kivy.uix.dropdown import DropDown
from kivy.uix.button import Button
import os
MAINDIR = os.path.dirname(os.path.realpath(__file__))
categories = {}
def getCategories():
for dir in os.walk(MAINDIR):
if len(dir[1]) == 0:
filelist = set()
for mesh in dir[2]:
filelist.add(mesh.replace('_FRONT.png','').replace('_SIDE.png','').replace('_TOP.png',''))
categories.update({dir[0]: filelist})
#class CategoriesList(DropDown):
# pass
class MainWindow(Widget):
def __init__(self):
#self.categorieslist = CategoriesList()
categories_list = DropDown()
for i in categories.keys():
btn = Button(text=i.replace(MAINDIR, ''), size_hint_y=None, height=30)
btn.bind(on_release=lambda btn: categories_list.select(btn.text))
categories_list.add_widget(btn)
mainbutton = Button(text='Choose directory', size_hint=(1, 1))
mainbutton.bind(on_release=categories_list.open)
categories_list.bind(on_select=lambda instance, x: setattr(mainbutton, 'text', x))
#and now???
class RenderApp(App):
def build(self):
self.launchMeshApp()
return MainWindow()
def launchMeshApp(self):
app = MeshApp()
p = multiprocessing.Process(target=app.run)
p.start()
if __name__ == '__main__':
getCategories()
RenderApp().run()
そして:
#:kivy 1.9.1
<MainWindow>:
canvas.before:
Color:
rgba: 0.6, 0.6, 1, 1
Rectangle:
pos: self.pos
size: self.size
canvas:
Color:
rgba: 0, 0, 0, 0.5
Rectangle:
pos: 0, self.height * 5/6 - 1
size: self.width, 2
ドキュメントにし、他のいくつかのフォーラムで見られるように、私は、ドロップダウンを作成しました。しかし、私は左上隅に配置する必要があり、私は決してこれを行う方法を見つけた、または理解したことはありません。さらに、クリックされたときはいつでもパラメータを使って関数を呼び出させる方法を知りませんでした。
ありがとうございました編集:「すべてのこんにちは」との最初の行は自動的に私がドロップダウンメニューを知らない
例:ここでは
は、ボタンのAPIの例に基づいてラフ、非テスト例です。ここの人々は 'MeshApp'やその他の特別なものを持っていないし、完全なプロジェクトへのリンクを提供するならば、おそらくRepoを複製するつもりはない。小さくて再現性のあるものは、迅速かつ正確な回答の鍵です。また、「いいえ」、「いいえ」というルールがあります。[ツアー](http://stackoverflow.com/tour)に記載されていると思います。 :P – KeyWeeUsr左上隅に配置するには、.kvファイル内のpos_hint:{'top':1、 'left':1}でRelativeLayoutを使用します – Daniel