在我的应用程序中,我有一个活动,托管两个碎片.如果我将一个MenuItem添加到菜单中,我可以在我的片段中检索它吗?Activity中的OptionMenu和他的子片段中的OptionMenu之间的联系是什么?
"我想在Tkinter中使用各种列表中的项目填充选项菜单,我该怎么做?在下面的代码中,它将整个列表视为菜单中的一个项目.我尝试使用for语句循环遍历列表但是它只给了我几次'a'的价值.
from Tkinter import *
def print_it(event):
print var.get()
root = Tk()
var = StringVar()
var.set("a")
lst = ["a,b,c,d,e,f"]
OptionMenu(root, var, lst, command=print_it).pack()
root.mainloop()
Run Code Online (Sandbox Code Playgroud)
我想现在将变量传递给此函数,但我得到第二行的语法错误:
def set_wkspc(event):
x = var.get()
if x = "Done":
break
else:
arcpy.env.workspace = x
print x
Run Code Online (Sandbox Code Playgroud) 我正在使用工具栏和使用选项进行相应的操作.我的问题是我想在白色工具栏上显示"SAVE"文本,我应用了很多样式,但它总是显示为黑色.但是当选项显示为弹出窗口时,文本颜色始终为白色.我谷歌这很多,但没有解决方案.
这是我的代码:
工具栏
<android.support.v7.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/tools"
android:id="@+id/my_awesome_toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
app:theme="@android:style/ThemeOverlay.Material.Light"
app:popupTheme="@style/Theme.AppCompat.NoActionBar"
android:background="@drawable/tb_header"
android:minHeight="?attr/actionBarSize"/>
Run Code Online (Sandbox Code Playgroud)
款式
<style name="MStyle" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@android:color/white</item>
<item name="android:colorBackground">@android:color/black</item>
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="android:textAllCaps">false</item>
<item name="android:popupMenuStyle">@style/MyPopupMenu</item>
<item name="android:panelBackground">@android:color/holo_green_light</item>
<item name="android:actionBarWidgetTheme">@style/AppTheme</item>
</style>
<style name ="MyPopupMenu" parent="android:Theme.Holo.Light">
<item name="android:popupBackground">@android:color/holo_green_light</item>
</style>
****Option menu****
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context="com.doubtfire.userprofiles.ParentProfileActivity">
<item
android:id="@+id/action_skip"
android:title="@string/menu_str_skip"
android:orderInCategory="100"
app:showAsAction="always" />
</menu>
****I even apply code at onPrepareOptionMenu****
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
for (int i=0; i<menu.size(); i++) {
MenuItem mi = menu.getItem(i);
String …Run Code Online (Sandbox Code Playgroud) 我想加PopupMenu我的MenuItem.
menu.xml文件
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/date"
app:showAsAction="ifRoom|withText"
android:title="Date"
android:visible="true"/>
<item
android:id="@+id/category"
app:showAsAction="ifRoom|withText"
android:title="Category"
android:visible="true"/>
</menu>
Run Code Online (Sandbox Code Playgroud)
当我点击时MenuItem我调用此代码:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id = item.getItemId();
if (id == R.id.filter_action) {
showPopup(item.getActionView());
}
return super.onOptionsItemSelected(item);
}
private void showPopup(View v) {
PopupMenu popup = new PopupMenu(getActivity(), v);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.filter_billing_menu, popup.getMenu());
popup.show();
}
Run Code Online (Sandbox Code Playgroud)
我得到这个例外:
java.lang.IllegalStateException: MenuPopupHelper cannot be used without an anchor
Run Code Online (Sandbox Code Playgroud)
我怎么解决它?
如果我从http://effbot.org/tkinterbook/optionmenu.htm中选择一个简单的OptionMenu示例,并添加一条设置背景颜色的线(见下文),只有按钮背景会改变颜色,而不是下拉菜单.仍然是灰色的 我可以为OptionMenu的按钮和菜单设置颜色吗?
我使用的是Windows 7,Python 2.6.6,Tkinter Rev 73770
from Tkinter import *
master = Tk()
variable = StringVar(master)
variable.set("one") # default value
w = OptionMenu(master, variable, "one", "two", "three")
w.config(bg = "GREEN") # Set background color to green
w.pack()
mainloop()
Run Code Online (Sandbox Code Playgroud)
谢谢
我想自动选择列表框中的第一项.通过选择第一项,我并不仅仅意味着默认为第一项或设置焦点.我已经做到了这一点self.listbox.select_set(0).我想要也选择默认项目.换句话说,当我在下面运行我的代码时,我想print(value)打印默认选择的值.如果从选项菜单中选择亚洲,日本应自动打印到控制台.如果非洲,尼日利亚应该打印,德国打印到欧洲.
有关如何实现这一目标的任何建议?谢谢.
from tkinter import *
from tkinter import ttk
import tkinter.messagebox
class App:
def __init__(self):
self.master = Tk()
self.di = {'Asia': ['Japan', 'China', 'Malaysia', 'India', 'Korea',
'Vietnam', 'Laos', 'Thailand', 'Singapore',
'Indonesia', 'Taiwan'],
'Europe': ['Germany', 'France', 'Switzerland'],
'Africa': ['Nigeria', 'Kenya', 'Ethiopia', 'Ghana',
'Congo', 'Senegal', 'Guinea', 'Mali', 'Cameroun',
'Benin', 'Tanzania', 'South Africa', 'Zimbabwe']}
self.variable_a = StringVar()
self.frame_optionmenu = ttk.Frame(self.master)
self.frame_optionmenu.pack()
options = sorted(self.di.keys())
self.optionmenu = ttk.OptionMenu(self.frame_optionmenu, self.variable_a, options[0], *options)
self.variable_a.set('Asia')
self.optionmenu.pack()
self.btn = ttk.Button(self.master, text="Submit", …Run Code Online (Sandbox Code Playgroud) 我是Python和Tkinter的新手,但我必须创建一个简单的表单,需要使用下拉菜单.我试图做这样的事情:
#!/usr/bin python
import sys
from Tkinter import *
# My frame for form
class simpleform_ap(Tk):
def __init__(self,parent):
Tk.__init__(self,parent)
self.parent = parent
self.initialize()
def initialize(self):
self.grid()
# Dropdown Menu
optionList = ["Yes","No"]
self.dropVar=StringVar()
self.dropVar.set("Yes") # default choice
self.dropMenu1 = OptionMenu(self, self.dropVar, *optionList)
self.dropMenu1.grid(column=1,row=4)
print self.dropVar.get()
def create_form(argv):
form = simpleform_ap(None)
form.title('My form')
form.mainloop()
if __name__ == "__main__":
create_form(sys.argv)
Run Code Online (Sandbox Code Playgroud)
然而,我打印出来的始终是默认值,我从来没有得到我从下拉列表中选择的值.
我尝试使用.trace方法为StingVar做这样的事情:
#!/usr/bin python
import sys
from Tkinter import *
# My frame for form
class simpleform_ap(Tk):
def __init__(self,parent):
Tk.__init__(self,parent)
self.parent = …Run Code Online (Sandbox Code Playgroud) 每个人!我有一个问题要问 Android 的人。任何帮助或建议将不胜感激。
所以我的问题是:
我有 ActionBarCompat 的应用程序,在这个操作栏中我有很多不同的隐藏菜单项,只有当用户单击操作栏上的菜单按钮时才会出现。另外,我在操作栏上有几个菜单项,它们始终可见。
我需要对可见菜单项之一进行一些自定义。当用户单击此菜单项(假设它是“添加新”菜单项)时,我需要在这种情况下显示不同的菜单。如果用户单击标准菜单项,它的行为应该像平常一样。
所以我真的很困惑。我不知道该怎么做。也许有人有同样的问题或类似的问题。谢谢你!
为了更好地理解截图:
我从 Tkinter 创建了一个 OptionMenu,列跨度为 2。但是,下拉列表/菜单与宽度不匹配,所以它看起来不太好。关于如何匹配它们的宽度的任何想法?
self.widgetVar = StringVar(self.top)
choices = ['', 'wire', 'register']
typeOption = OptionMenu(self.top, self.widgetVar, *choices)
typeOption.grid(column = 0, columnspan = 2, row = 0, sticky = 'NSWE', padx = 5, pady = 5)
Run Code Online (Sandbox Code Playgroud) 我正在一个接一个地替换 2 个片段,并且两个片段都有不同的选项菜单。当我替换第二个片段时,它也显示了第一个片段的菜单。setHasOptionMenu(true); 已在两个片段中设置。
我只想显示我在特定片段中创建的选项菜单,并希望避免其他片段的选项。
请帮忙,谢谢
optionmenu ×10
android ×5
python ×5
tkinter ×5
list ×1
listbox ×1
menu ×1
menuitem ×1
popupmenu ×1
python-2.7 ×1
python-3.x ×1
size ×1