精华内容
下载资源
问答
  • 2022-03-09 09:59:55
    在需要的activity中建立一个button
    下面建立一个button
    <Button
        android:id="@+id/btn_edittext"//button的名字随便起
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/roundbutton"//直接建立roundbutton的模板以后直接用
       
    
    在drawable里建立roundbutton

     

    用shape工具完成

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="rectangle">
    <solid
    
        android:color="#5095edff"/> //按钮的颜色,随意设
        <padding
            android:left="10dp"
            android:right="10dp"/> 
        <corners
            android:radius="30dp"/> //圆角的半径
    
    </shape>

    更多相关内容
  • excel怎么设置选项选择 使用Excel选项按钮选择答案 (Select Answers With Excel Option Buttons) Male or female? English or French? Yes, No or Maybe? Those are just a few of the choices that you can make ...

    excel怎么设置选项选择

    image

    Male or female? English or French? Yes, No or Maybe? Those are just a few of the choices that you can make with Option Buttons in Excel. When people select answers with Excel Option Buttons, you can provide a list of possible answers to a questions, and users can only select one answer from the list.

    男女不限? 英语还是法语? 是的,否或也许? 这些只是您可以在Excel中使用“选项按钮”进行的一些选择。 当人们使用Excel选项按钮选择答案时,您可以提供一个问题的可能答案列表,而用户只能从列表中选择一个答案。

    选项按钮问题 (Option Button Questions)

    You can use Option Buttons instead of Data Validation drop down lists, or instead of allowing free form answers. Do you use Option Buttons? Love them? Hate them?

    您可以使用“选项按钮”代替“ 数据验证”下拉列表 ,或者代替使用自由格式的答案。 您是否使用选项按钮? 爱他们? 讨厌他们?

    OptionButton12

    准备添加Excel选项按钮 (Get Ready to Add Excel Option Buttons)

    To add Option Buttons in Excel 2007, you'll use commands on the Ribbon's Developer tab.

    要在Excel 2007中添加选项按钮,您将在功能区的“开发人员”选项卡上使用命令。

    If you don't see that tab on your Excel Ribbon, follow the instructions here: Show the Developer Tab on Excel Ribbon

    如果您在Excel功能区上看不到该选项卡,请按照此处的说明进行操作: 在Excel功能区上显示“开发人员”选项卡

    添加群组框 (Add a Group Box)

    To connect a set of Option Buttons to one another, you can enclose them in a Group Box control on the worksheet. By using Group Boxes, we could have one set of Option Buttons that show Language choices, and another set of Options Buttons for Age Group.

    要将一组选项按钮相互连接,可以将它们封装在工作表上的“组框”控件中。 通过使用“组框”,我们可以有一组显示语言选择的选项按钮,以及另一组“年龄组”的选项按钮。

    Without Group Boxes, all the Option Buttons on the worksheet would be connected, and you'd only be able to select one at a time. So, if we want users to answer two different questions, we'd create two Group Boxes for the Option Buttons.

    如果没有“组框”,则工作表上的所有“选项”按钮都将被连接,并且您一次只能选择一个。 因此,如果我们希望用户回答两个不同的问题,我们将为“选项按钮”创建两个“组框”。

    要添加组框: (To add a Group Box:)
    • On the Excel Ribbon, click the Developer tab

      在Excel功能区上,单击“开发人员”选项卡
    • In the Control group, click Insert

      在控制组中,单击插入
    • In the Form Controls section, click the Group Box command, to activate that tool.

      在“表单控件”部分中,单击“组框”命令以激活该工具。
    OptionButton01
    • Click on the Excel worksheet, where you'd like the top left of the Group Box to appear.

      单击Excel工作表,您会在其中显示“组框”的左上角。

    A Group Box is created, with the default name of Group Box 1.

    创建了一个分组框,其默认名称为分组框1。

    OptionButton02

    修改组框 (Modify the Group Box)

    You can change the Caption and size of the Group Box, to suit your needs.

    您可以更改标题和组框的大小,以满足您的需要。

    若要更改组框标题: (To change the Group Box Caption:)
    • With the Group Box selected, drag over the Caption text, to select it.

      选中“组框”后,将其拖到“标题”文本上以将其选中。
    • Type a new Caption for the Group Box.

      为组框键入一个新的标题。
    OptionButton03

    In the screenshot below, I've changed the Caption from Group Box 1 to Language.

    在下面的屏幕截图中,我将标题从“组框1”更改为“语言”。

    更改组框大小: (To change the Group Box size:)
    • With the Group Box selected, point to one of the round white handles on its border.

      选中“组框”后,指向其边框上的圆形白色手柄之一。
    • Drag the handle in or out, to change the size of the Group Box.

      向内或向外拖移手柄,以更改组框的大小。
    • You'll see an outline as you drag the handle, so release the mouse button when the outline is the size that you want,

      拖动手柄时,您会看到一个轮廓,因此,当轮廓达到所需大小时,释放鼠标按钮,

    In the screenshot below, I've dragged the bottom right handle up and to the right, to make the Group Box shorter and wider.

    在下面的屏幕截图中,我将右下方的手柄向上和向右拖动,以使“组框”更短和更宽。

    OptionButton04

    添加选项按钮 (Add the Option Buttons)

    Now that the Group Box is created, you can add the Option Buttons inside the Group Box.

    现在已经创建了Group Box,您可以在Group Box中添加Option Button。

    • On the Excel Ribbon's Developer tab, in the Controls group, click Insert

      在“ Excel功能区”的“开发人员”选项卡上的“控件”组中,单击“插入”。
    • In the Form Controls section, click the Option Button command, to activate that tool.

      在“表单控件”部分中,单击“选项按钮”命令以激活该工具。
      • Click inside the Group Box, where you want the top left of the Option Button to appear.

        在“组框”内单击,您要在其中显示“选项按钮”的左上方。
    • The entire Option Button and its Caption must be within the Group Box, so adjust the Group Box size, if necessary.

      整个选项按钮及其标题必须在Group Box内,因此,如有必要,请调整Group Box的大小。

    In the screenshot below, I had to make the Group Box a bit taller, to fit the Option Button 2.

    在下面的屏幕截图中,我必须将Group Box设置得更高一些,以适合Option Button 2。

    OptionButton06

    修改选项按钮 (Modify the Option Buttons)

    Add as many Option Buttons as you need in the Group Box, so there's one for each possible answer. Then, you can change the Option Button captions.

    在“组”框中添加所需数量的选项按钮,因此每个可能的答案都有一个。 然后,您可以更改选项按钮的标题。

    更改选项按钮标题: (To change the Option Button Caption:)
    • Right-click on the Option Button, and click Edit Text.

      用鼠标右键单击选项按钮,然后单击编辑文本。
    • Select the existing Caption text, and type the new text for that Option Button

      选择现有的标题文本,然后为该选项按钮键入新文本

    In the screenshot below, I've changed the Option Button Captions to English and French.

    在下面的屏幕截图中,我将“选项按钮标题”更改为英语和法语。

    OptionButton07

    测试选项按钮 (Test the Option Buttons)

    After you've created the Group Box, and added the Option Buttons, you can test the Option Buttons.

    创建“组框”并添加“选项按钮”之后,可以测试“选项按钮”。

    • When you click a button, a black circle should appear in it.

      当您单击一个按钮时,其中应出现一个黑色圆圈。
    • All the other Option Buttons should change to white circles.

      所有其他“选项”按钮应更改为白色圆圈。
    • If one or more of the Options Buttons don't work correctly, adjust the Group Box size to enclose the entire Option Button and its label.

      如果一个或多个“选项按钮”无法正常工作,请调整“分组框”的大小以包围整个“选项按钮”及其标签。
    OptionButton08

    存储选项按钮选择 (Store the Option Button Selection)

    On the worksheet, you can see which option has been selected in each Group Box. If you want to use that selection in a formula, or store it in a list, you can link the results to a worksheet cell.

    在工作表上,您可以看到在每个组框中选择了哪个选项。 如果要在公式中使用该选择或将其存储在列表中,则可以将结果链接到工作表单元格。

    要将选项框链接到单元格: (To link the Option Box to a cell:)
    • Right-click on any one of the Option Boxes in the Group Box.

      右键单击“组”框中的任何一个“选项”框。
    • In the popup menu, click Format Control

      在弹出菜单中,单击“格式控制”
    OptionButton09
    • In the Format Control dialog box, click in the Cell link box

      在“格式控制”对话框中,单击“单元格”链接框
    • On the worksheet, click the cell where you want to store the Group Box selection number.

      在工作表上,单击要在其中存储“组框”选择号的单元格。
    • Click OK

      点击确定

    In the screenshot below, the Option Box is linked to cell C3 on a sheet named Results.

    在下面的屏幕截图中,“选项框”链接到名为“结果”的工作表上的单元格C3。

    OptionButton10

    Now, when you click on one of the Option Boxes in the Group Box, the Option Box's number will appear in the linked cell. The number is based on the order in which you created the Option Boxes.

    现在,当您单击“组”框中的“选项框”之一时,选项框的编号将出现在链接的单元格中。 该数字基于您创建选项框的顺序。

    OptionButton11

    You could use that result in a formula, such as, =IF(Results!C3=2,"Bonjour","Hello")

    您可以在公式中使用该结果,例如= IF(Results!C3 = 2,“ Bonjour”,“ Hello”)

    创建调查表 (Creating a Survey Form)

    To see an example of Option Boxes in a survey form, take a look at Dave Peterson's Excel Survey Template. It uses programming to create the Group Boxes and Option Boxes.

    要查看调查表单中的选项框示例,请查看Dave Peterson的Excel Survey Template 。 它使用编程来创建“组框”和“选项框”。

    观看选项按钮视频 (Watch the Option Button Video)

    To see the steps for creating a Group Box with Option Boxes, watch this short Excel Option Buttons video.

    要查看创建带有选项框的组框的步骤,请观看这​​段简短的Excel选项按钮视频。

    演示地址

    翻译自: https://contexturesblog.com/archives/2010/03/24/select-answers-with-excel-option-buttons/

    excel怎么设置选项选择

    展开全文
  • 文章目录Radiobutton 选项按钮选项按钮的基本概念Checkbutton 复选框 Radiobutton 选项按钮 选项按钮的基本概念   选项按钮Radiobutton 名称的由来是无线电的按钮,在收音机时代可以用无线电的按钮选择特定频道。...

    Radiobutton 选项按钮

    选项按钮的基本概念

      选项按钮Radiobutton 名称的由来是无线电的按钮,在收音机时代可以用无线电的按钮选择特定频道。选项按钮最大的特色是可以用鼠标单击方式选取此选项,同时一次只能有一个选项被选取。最常见的方式是让选项按钮以文字方式存在,与标签一样,我们也可以设计含图像的选项按钮

      程序设计时可以设计让选项按钮与函数(或称方法)绑在一起,当选择适当的选项按钮时,可以自动执行相关的函数或方法

      语法格式:

    Radiobutton(父对象, options, ...)
    

    参数:

    • 第一个参数:父对象,表示这个选项按钮将建立在哪一个窗口内
    • 第二个参数:options,参数如下
    参数含义
    activebackground鼠标光标在选项按钮上时的背景颜色
    activeforeground鼠标光标在选项按钮上时的前景颜色
    anchor如果空间大于所需时,控制选项按钮的位置
    默认值是CENTER
    bitmap位图图像对象
    borderwidth边界宽度
    默认是两个像素
    bd边界宽度
    默认是两个像素
    bg标签背景或indicator的背景颜色
    command单机功能按钮时,执行此方法
    cursor当鼠标光标移至按钮上时的形状
    fg文字前景色彩
    font字形
    height高,单位是字符高
    highlightbackground当选项按钮获取焦点时的背景颜色
    highlightcolor当选项按钮取得焦点时的颜色
    image图像对象,如果要建立含图像的选项按钮时,可以使用此参数
    indicatoron当此值为0时,可以建立盒子选项按钮
    justify当有多行文字时,最后一行文字的对齐方式
    padx可设置选项按钮与文字的间隔
    默认是1
    pady可设置选项按钮的上下间距
    默认是1
    selectcolor当选项按钮被选取时的颜色
    selectimage如果设置图像选项按钮时,可由此设置当选项按钮被选取时的不同图像
    state若设置为DISABLED,则以灰阶显示选项按钮,表示暂时无法使用
    默认是state=NORMAL
    text选项按钮名称
    textvariable以变量方式显示选项按钮文字
    underline可以设置第几个文字有下划线
    从0开始计算,默认是-1,表示无下划线
    value选项按钮的值,可以区分所选取的选项按钮
    variable设置或取得目前选取的单选按钮,它的值类型通常是IntVar或StringVar
    width选项按钮的文字有几个字符框,省略时会自动调整为实际宽度
    wraplength限制每行的文字数
    默认是0,表示只有"\n"才会换行

    选项按钮的初步运用

    例子:运用IntVar

    import tkinter
    
    def show():
        # 获取var的值
        num = var.get()
        # 如果值为1,更改text值为"我是男生"
        if num == 1:
            label.config(text="我是男生")
        # 如果值为2,更改text值为"我是女生"
        else:
            label.config(text="我是女生")
    
    
    # 创建主窗口
    root = tkinter.Tk()
    # 整型对象
    var = tkinter.IntVar()
    # 设置默认选项为1, 在次相当于默认是男生
    var.set(1)
    
    label = tkinter.Label(root, text="这是预选,还未选择", bg="lightyellow", width=30)
    label.pack()
    
    # 创建男生选项按钮,值为1,点击此按钮自动调用show函数
    man = tkinter.Radiobutton(root, text="男生", variable=var, value=1, command=show)
    man.pack()
    # 创建女生选项按钮,值为2
    woman = tkinter.Radiobutton(root, text="女生", variable=var, value=2, command=show)
    woman.pack()
    
    root.mainloop()
    

    运行结果:
    在这里插入图片描述

    variablevalue绑定,通过get方法将所选选项的参数value的值传回,因为我们最开始设置默认是1,但是我们没有点击它,就没有触发show函数,故没有在开始就变为"我是男生"

    例子:更改方式,不用IntVar,用StringVar

    import tkinter
    
    def show():
        # 获取var的值
        label.config(text="我是"+var.get())
    
    
    # 创建主窗口
    root = tkinter.Tk()
    # 整型对象
    var = tkinter.StringVar()
    # 设置默认选项为1, 在次相当于默认是男生
    var.set("男生")
    
    label = tkinter.Label(root, text="这是预选,还未选择", bg="lightyellow", width=30)
    label.pack()
    
    # 创建男生选项按钮,值为1,点击此按钮自动调用show函数
    man = tkinter.Radiobutton(root, text="男生", variable=var, value="男生", command=show)
    man.pack()
    # 创建女生选项按钮,值为2
    woman = tkinter.Radiobutton(root, text="女生", variable=var, value="女生", command=show)
    woman.pack()
    
    root.mainloop()
    

    运行结果:
    跟第一种方式一样

    将字典应用在选项按钮上

    选项少好说,要是选项多了呢?这时候字典就很方便了

    例子

    import tkinter
    
    def show():
        # 获取var的值
        label.config(text="我是"+dict[var.get()])
    
    
    # 创建主窗口
    root = tkinter.Tk()
    var = tkinter.IntVar()
    var.set(0)
    
    dict = {0: "一年级", 1: "二年级", 2: "三年级", 3: "四年级", 4: "五年级", 5: "六年级"}
    
    label = tkinter.Label(root, text="这是预选,还未选择", bg="lightyellow", width=30)
    label.pack()
    
    for x, y in dict.items():
        tkinter.Radiobutton(root, text=y, variable=var, value=x, command=show).pack()
    
    root.mainloop()
    

    运行结果:
    在这里插入图片描述

    盒子选项按钮

    意思就是把小圆框变成盒子样式的选项按钮

    在Radiobutton方法内使用indicatoron参数,将他设为0,就可以把它变成盒子按钮

    例子

    import tkinter
    
    def show():
        # 获取var的值
        label.config(text="我是"+dict[var.get()])
    
    
    # 创建主窗口
    root = tkinter.Tk()
    var = tkinter.IntVar()
    var.set(0)
    
    dict = {0: "一年级", 1: "二年级", 2: "三年级", 3: "四年级", 4: "五年级", 5: "六年级"}
    
    label = tkinter.Label(root, text="这是预选,还未选择", bg="lightyellow", width=30)
    label.pack()
    
    for x, y in dict.items():
        tkinter.Radiobutton(root, text=y, variable=var, indicatoron=0, value=x, width=30, command=show).pack()
    
    root.mainloop()
    

    运行结果:
    在这里插入图片描述

    建立含图像的选项按钮

    也可以将选项文字用图像代替,用法跟标签Label相同

    例子

    import tkinter
    
    def show():
        # 获取var的值
        label.config(text="选择的是"+var.get())
    
    
    # 创建主窗口
    root = tkinter.Tk()
    
    # 加载帽子图像
    imgHat = tkinter.PhotoImage(file="1.png")
    # 加载袜子图像
    imgSocks = tkinter.PhotoImage(file="2.png")
    # 加载纸尿裤图像
    imgDiapers = tkinter.PhotoImage(file="3.png")
    
    var = tkinter.StringVar()
    var.set("帽子")
    
    label = tkinter.Label(root, text="这是预选,还未选择", bg="lightyellow", width=30)
    label.pack()
    
    Hat = tkinter.Radiobutton(root, image=imgHat, variable=var, value="帽子", command=show)
    Hat.pack()
    
    Socks = tkinter.Radiobutton(root, image=imgSocks, variable=var, value="袜子", command=show)
    Socks.pack()
    
    Diapers = tkinter.Radiobutton(root, image=imgDiapers, variable=var, value="纸尿裤", command=show)
    Diapers.pack()
    
    root.mainloop()
    

    运行结果:
    在这里插入图片描述
    另外,可以加上文字,增加text参数设置文字,增加compound参数设置图像与文字的位置

    例子

    Hat = tkinter.Radiobutton(root, text="帽子", image=imgHat, compound=tkinter.RIGHT, variable=var, value="帽子", command=show)
    Hat.pack()
    
    Socks = tkinter.Radiobutton(root, text="袜子", image=imgSocks, compound=tkinter.RIGHT, variable=var, value="袜子", command=show)
    Socks.pack()
    
    Diapers = tkinter.Radiobutton(root, text="纸尿裤", image=imgDiapers, compound=tkinter.RIGHT, variable=var, value="纸尿裤", command=show)
    Diapers.pack()
    

    运行结果:
    在这里插入图片描述

    Checkbutton 复选框

    Checkboxs 可以翻译为复选框,它在控件中的类别名称是Checkbutton

    复选框在屏幕上显示为一个方框,它与选项按钮最大的差别在于它是复选。在设计复选框时,最常见的方式是让复选框以文字形式存在,与标签一样,也可以设计含有图像的复选框

    程序设计时,可以设计让每个复选框与函数(或称方法)绑在一起,当此选项被选择时,可以自动执行相关的函数或方法

    可以使用Cheakbutton()方法建立复选框,语法格式如下:

    Cheakbutton(父对象, options, ...)
    

    参数:

    • 第一个参数:父对象,表示这个复选框按钮将建立在哪一个窗口内
    • 第二个参数:options,参数如下
    参数含义
    activebackground鼠标光标在复选框按钮上时的背景颜色
    activeforeground鼠标光标在复选框按钮上时的前景颜色
    bitmap位图图像对象
    borderwidth边界宽度
    默认是两个像素
    bd边界宽度
    默认是两个像素
    bg标签背景或indicator的背景颜色
    command当用户更改选项时,会自动执行此方法
    cursor当鼠标光标移至复选框上时的形状
    disabledforeground当无法操作时的颜色
    font字形
    height复选框中的文字有几行
    默认是一行
    highlightbackground当复选框按钮获取焦点时的背景颜色
    highlightcolor当复选框按钮取得焦点时的颜色
    image图像对象,如果要建立含图像的选项按钮时,可以使用此参数
    justify当有多行文字时,最后一行文字的对齐方式
    offvalue这是控制变量默认,若复选框未选取值是0,可以由此更改设置此值
    onvalue这是控制变量默认,若复选框未选取值是1,可以由此更改设置此值
    padx可设置复选框按钮与文字的间隔
    默认是1
    pady可设置复选框按钮的上下间距
    默认是1
    relief可由此控制复选框外框
    默认是relief=FLAT
    selectcolor当复选框按钮被选取时的颜色
    selectimage如果设置图像复选框按钮时,可由此设置当复选框按钮被选取时的不同图像
    state若设置为DISABLED,则以灰阶显示复选框按钮,表示暂时无法使用
    默认是state=NORMAL
    如果鼠标光标在复选框上方表示ACTIVE
    text复选框旁的文字
    underline可以设置第几个文字有下划线
    从0开始计算,默认是-1,表示无下划线
    variable设置或取得目前选取的复选框,它的值类型通常是IntVar或StringVar
    width复选框按钮的文字有几个字符框,省略时会自动调整为实际宽度
    wraplength限制每行的文字数
    默认是0,表示只有"\n"才会换行

    复选框的初步运用

    例子

    import tkinter
    
    # 创建主窗口
    root = tkinter.Tk()
    
    label = tkinter.Label(root, text="请选择最喜欢的食物", bg="lightyellow", fg="red", width=30)
    label.grid(row=0)
    
    varOne = tkinter.IntVar()
    cbutOne = tkinter.Checkbutton(root, text="饺子", variable=varOne)
    cbutOne.grid(row=1, sticky=tkinter.W)
    
    varTwo = tkinter.IntVar()
    cbutTwo = tkinter.Checkbutton(root, text="春卷", variable=varTwo)
    cbutTwo.grid(row=2, sticky=tkinter.W)
    
    varThree = tkinter.IntVar()
    cbutThree = tkinter.Checkbutton(root, text="汤圆", variable=varThree)
    cbutThree.grid(row=3, sticky=tkinter.W)
    
    root.mainloop()
    

    运行结果:
    在这里插入图片描述
    例子:运用字典的形式

    import tkinter
    
    def send():
        x = ""
        for j in cheakboxs:
            # 这里实际上是cheakboxs[j].get() == True
            # 如果被勾选的话传回来的值为True
            # 如果没有被勾选的话传回来的值为False
            if cheakboxs[j].get():
                x = x +foods[j] + "\n"
        print(x)
    
    
    # 创建主窗口
    root = tkinter.Tk()
    
    label = tkinter.Label(root, text="请选择最喜欢的食物", bg="lightyellow", fg="red", width=30)
    label.grid(row=0)
    
    foods = {0: "饺子", 1: "春卷", 2: "汤圆", 3: "混沌", 4: "热干面"}
    # 这里负责给予字典的键一个False或者True的值,用于检测是否被勾选
    cheakboxs = {}
    for i in range(len(foods)):
        # 这里相当于是{0: False, 1: False, 2: False, 3: False, 4: False}
        cheakboxs[i] = tkinter.BooleanVar()
        # 只有被勾选才变为True
        tkinter.Checkbutton(root, text=foods[i], variable=cheakboxs[i]).grid(row=i + 1, sticky=tkinter.W)
    
    buttonOne = tkinter.Button(root, text="提交", width=10, command=send)
    buttonOne.grid(row=len(foods) + 1)
    
    root.mainloop()
    

    运行结果:
    在这里插入图片描述

    简单编辑程序的应用

    混用文本框,功能按钮,复选框

    例子

    import tkinter
    
    def selectAll():
        # select_range 选择的范围
        entry.select_range(0, "end")
    
    def selectDel():
        # 清空选择的文字
        entry.select_clear()
    
    def clear():
        # 删除所有
        entry.delete(0, "end")
    
    def readOnly():
        if var.get():
            # 以灰阶显示复选框,表示暂时无法使用
            entry.config(state=tkinter.DISABLED)
        else:
            entry.config(state=tkinter.NORMAL)
    
    
    
    # 创建主窗口
    root = tkinter.Tk()
    
    # row=0 建立Entry文本框
    entry = tkinter.Entry(root, width=30)
    entry.grid(row=0, column=0, columnspan=4, padx=5, pady=5, sticky=tkinter.W)
    
    # row=1 建立按钮
    butOne = tkinter.Button(root, text="全选", command=selectAll)
    butOne.grid(row=1, column=0, padx=5, pady=5, sticky=tkinter.W)
    
    butTwo = tkinter.Button(root, text="取消全选", command=selectDel)
    butTwo.grid(row=1, column=1, padx=5, pady=5, sticky=tkinter.W)
    
    butThree = tkinter.Button(root, text="删除", command=clear)
    butThree.grid(row=1, column=2, padx=5, pady=5, sticky=tkinter.W)
    
    butFour = tkinter.Button(root, text="退出", command=root.destroy)
    butFour.grid(row=1, column=3, padx=5, pady=5, sticky=tkinter.W)
    
    # row=2 复选框
    var = tkinter.BooleanVar()
    var.set(False)
    cheakReadOnly = tkinter.Checkbutton(root, text="只读", variable=var, command=readOnly)
    cheakReadOnly.grid(row=2, column=0)
    
    root.mainloop()
    

    运行结果:
    在这里插入图片描述

    谢谢观看,笔者会持续更新,如有错误或者建议,请私信我

    展开全文
  • QComboBox下拉框给选项增加删除按钮

    千次阅读 2020-06-04 22:22:32
    网上有不少 Qt 实现的例子,实现方式也很多,在参照了别人的思路后我也实现了选项按钮的下拉框。中间遇到不少坑,最后效果也不完美。 1.实现过程 我选的是 QListWidget +QListWidgetItem 的方式,因为感觉相对...

    0.前言

    给下拉框增加按钮是常见的功能,如 QQ 账号输入框的下拉:

    网上有不少 Qt 实现的例子,实现方式也很多,在参照了别人的思路后我也实现了选项带按钮的下拉框。中间遇到不少坑,最后效果也不完美。

    1.实现过程

    我选的是 QListWidget + QListWidgetItem 的方式,因为感觉相对简单点,而且和样式表更好搭配。这种方式主要是把 QListWidget作为 QComboBox 的 View ,List 的 model 也设置为 QComboBox 的 model,这样展现出来的选项就是一个 QListWidgetItem,我们只需要把按钮设置到 QListWidgetItem 的 widget 中就行了。

    这里面还有个问题是, 要让 QComboBox 读取到对应项的文本,还要给 QListWidgetItem 加一句这个:

    QListWidgetItem* item_widget = new QListWidgetItem();
    //设置显示的data,这样combox才有文字
    item_widget->setData(Qt::DisplayRole,"text");

    然后来看一下比较简单的实现:

        QListWidget *item_list=new QListWidget(this);
        ui->comboBoxA->setModel(item_list->model());
        ui->comboBoxA->setView(item_list);
    
        //添加选项
        for(int i=0;i<5;i++)
        {
            //组合一个带按钮的widget
            QWidget *item_widget=new QWidget();
            QHBoxLayout *layout=new QHBoxLayout(item_widget);
            layout->addStretch(); //弹簧
            QPushButton *btn=new QPushButton(item_widget);
            layout->addWidget(btn);
            layout->setMargin(0);
            layout->setSpacing(0);
    
            QListWidgetItem* item_wrap = new QListWidgetItem(item_list);
            //测试长文字
            QString text=(i==0)?"text long long long":"text";
            //设置显示的data,这样combox才有文字
            item_wrap->setData(Qt::DisplayRole,text);
            item_list->setItemWidget(item_wrap,item_widget);
    
            connect(btn,&QPushButton::clicked,this,[=](){
                ui->comboBoxA->hidePopup(); //没有刷新弹框大小
                item_list->takeItem(item_list->row(item_wrap));
                delete item_wrap;
            });
        }

    很快就发现了问题,文字足够长时,选项整体宽度被拉长了,导致按钮位置超出了显示范围(下图蓝色框部分):

     

    (按钮位置我是配合样式表的 margin 调整的,可见源代码) 

    索性我就继承了 QListWidget,重写了他的 visualRect 接口,在有滚动条时,rect 就去掉滚动条的宽度:

    QRect ComboView::visualRect(const QModelIndex &index) const
    {
        QRect rect=QListWidget::visualRect(index);
        int width=this->width();
        if(verticalScrollBar()->isVisible()){
            width-=verticalScrollBar()->width();
        }
        rect.setWidth(width);
        return rect;
    }

    这下就能把选项挤过来了:

     

    这里还有个滚动条占位得问题没解决,我的想法是显示或增删选项时去判断是否有滚动条,然后调整按钮的 margin。

    2.完整代码

    github 链接:https://github.com/gongjianbo/MyTestCode/tree/master/Qt/MyComboBox

    主要实现(比较忙, demo 没怎么写注释):

    #ifndef MYCOMBOBOX_H
    #define MYCOMBOBOX_H
    
    #include <QComboBox>
    #include <QListView>
    #include <QListWidget>
    #include <QPushButton>
    #include <QLayout>
    #include <QStyledItemDelegate>
    
    class ComboView : public QListWidget
    {
        Q_OBJECT
    public:
        explicit ComboView(QWidget * parent=nullptr);
    
        QRect visualRect(const QModelIndex &index) const override;
    };
    
    class ComboItem : public QWidget
    {
        Q_OBJECT
    public:
        explicit ComboItem(const QString &text,QWidget *parent = nullptr);
        ~ComboItem();
        QString text() const;
    
    signals:
        void itemClicked(const QString &text);
    
    private:
        QString textValue;
        QPushButton *btn;
    };
    
    class MyComboBox : public QComboBox
    {
        Q_OBJECT
    public:
        explicit MyComboBox(QWidget *parent = nullptr);
    
        void setRemovableItems(const QStringList &items);
    
    signals:
        void itemRemoved(const QString &text);
    
    private:
        QListWidget *itemList;
    };
    
    #endif // MYCOMBOBOX_H
    
    #include "MyComboBox.h"
    
    #include <QMouseEvent>
    #include <QLineEdit>
    #include <QStyleOptionViewItem>
    #include <QStyle>
    #include <QScrollBar>
    
    #include <QDebug>
    
    ComboView::ComboView(QWidget *parent)
        : QListWidget(parent)
    {
    
    }
    
    QRect ComboView::visualRect(const QModelIndex &index) const
    {
        QRect rect=QListWidget::visualRect(index);
        int width=this->width();
        if(verticalScrollBar()->isVisible()){
            width-=verticalScrollBar()->width();
        }
        rect.setWidth(width);
        return rect;
    }
    
    ComboItem::ComboItem(const QString &text, QWidget *parent)
        : QWidget(parent),
          textValue(text),
          btn(new QPushButton(this))
    {
        QHBoxLayout *layout=new QHBoxLayout(this);
        layout->addStretch();
        layout->addWidget(btn);
        layout->setMargin(0);
        layout->setSpacing(0);
    
        connect(btn,&QPushButton::clicked,[this]{
            emit itemClicked(textValue);
        });
    }
    
    ComboItem::~ComboItem()
    {
        qDebug()<<"~delete"<<textValue;
    }
    
    QString ComboItem::text() const
    {
        return textValue;
    }
    
    MyComboBox::MyComboBox(QWidget *parent)
        : QComboBox(parent),
          itemList(new ComboView(this))
    {
        //itemList->setTextElideMode(Qt::ElideNone);
        setModel(itemList->model());
        setView(itemList);
    }
    
    void MyComboBox::setRemovableItems(const QStringList &items)
    {
        //combox的additem insertitem不是虚函数
        //实现里时调用的model->insertRow,但是懒得再去重写listmodel-view,就新增一个接口
        itemList->clear();
        if(items.isEmpty())
            return;
    
        for(int i=0;i<items.count();i++)
        {
            QListWidgetItem* widget_item = new QListWidgetItem(itemList);
            ComboItem *item=new ComboItem(items.at(i),itemList);
            widget_item->setData(Qt::DisplayRole,items.at(i));
            //widget_item->setData(Qt::TextAlignmentRole,int(Qt::AlignRight|Qt::AlignVCenter));
            itemList->setItemWidget(widget_item,item);
    
            connect(item,&ComboItem::itemClicked,this,[this,item,widget_item](){
                //take移除item后没有刷新弹框大小,干脆隐藏掉先
                hidePopup();
    
                itemList->takeItem(itemList->row(widget_item));
                delete widget_item;
                emit itemRemoved(item->text());
            });
        }
    }
    
    

     

    #include "mainwindow.h"
    #include "ui_mainwindow.h"
    
    #include "MyComboBox.h"
    
    #include <QListWidget>
    #include <QDebug>
    
    MainWindow::MainWindow(QWidget *parent) :
        QMainWindow(parent),
        ui(new Ui::MainWindow)
    {
        ui->setupUi(this);
    
        //【1】 ui上的QComboBox
        QListWidget *item_list=new QListWidget(this);
        ui->comboBoxA->setModel(item_list->model());
        ui->comboBoxA->setView(item_list);
    
        //添加选项
        for(int i=0;i<5;i++)
        {
            //组合一个带按钮的widget
            QWidget *item_widget=new QWidget();
            QHBoxLayout *layout=new QHBoxLayout(item_widget);
            layout->addStretch(); //弹簧
            QPushButton *btn=new QPushButton(item_widget);
            layout->addWidget(btn);
            layout->setMargin(0);
            layout->setSpacing(0);
    
            QListWidgetItem* item_wrap = new QListWidgetItem(item_list);
            //测试长文字
            QString text=(i==0)?"text long long long":"text";
            //设置显示的data,这样combox才有文字
            item_wrap->setData(Qt::DisplayRole,text);
            item_list->setItemWidget(item_wrap,item_widget);
    
            connect(btn,&QPushButton::clicked,this,[=](){
                ui->comboBoxA->hidePopup(); //没有刷新弹框大小
                item_list->takeItem(item_list->row(item_wrap));
                delete item_wrap;
            });
        }
    
    
        //【2】ui上的combobox提升为自定义子类
        QStringList str_list{
            "1234567891011+++++++++++++",
            "2234567891011",
            "323",
            "423",
            "523",
            "623",
            "723",
            "823",
            "123",
            "123",
            "123"
        };
        ui->comboBoxB->setRemovableItems(str_list);
        //ui->comboBoxB->setMaxVisibleItems(20);
    
        connect(ui->comboBoxB,&MyComboBox::itemRemoved,this,[=](const QString &text){
            qDebug()<<"item remove"<<text;
            //ui->comboBox_2->clear();
        });
    }
    
    /*下拉框*/
    QComboBox{
    min-width:1px;
    min-height:26px;
    padding-left: 5px;
    padding-right: 2px;
    color: white;
    border:1px solid rgb(128, 128, 128);
    background-color:  rgb(100 ,100 ,100);
    }
    QComboBox:on{
    /*弹出为on*/
    }
    QComboBox:hover{
    border:1px solid rgb(255, 170, 0);
    }
    QComboBox:disabled{
    color: rgb(230, 230, 230);
    background-color:rgb(150, 150, 150);
    }
    QComboBox:editable{
    background-color:rgb(100, 100, 100);
    }
    QComboBox:editable:disabled{
    background-color:rgb(150, 150, 150);
    }
    /*下拉按钮-配合贴图*/
    QComboBox::drop-down{
    min-width:24px;
    }
    /*下拉框弹出项*/
    QComboBox QAbstractItemView{
    font: 15px "宋体";
    background-color:rgb(110, 110, 110);
    }
    QComboBox QAbstractItemView::item{
    height:24px;
    color:white;
    }
    QComboBox QAbstractItemView::item:hover{
    background-color: rgb(255, 170, 0);
    }
    QComboBox QAbstractItemView::item:selected{
    background-color: rgb(255, 170, 0);
    }
    /*按钮样式*/
    QComboBox QAbstractItemView QPushButton{
    max-width:20px;
    min-width:20px;
    max-height:20px;
    min-height:20px;
    border:0;
    margin-right:20px;
    background-color:white;
    }
    QComboBox QAbstractItemView QPushButton:hover{
    background-color:cyan;
    }

     3.参考

    博客:https://blog.csdn.net/wukai_std/article/details/60144318

    博客:http://blog.sina.com.cn/s/blog_a6fb6cc90102vces.html

    展开全文
  • html中按钮颜色怎么设置

    千次阅读 2021-07-04 03:54:18
    ”样式来设置按钮的背景颜色,添加“color:颜色值;”样式来设置按钮的字体颜色。本教程操作环境:windows7系统、CSS3&&HTML5版、Dell G3电脑。html中设置按钮的背景颜色 按钮1 按钮2 效果图:说明:...
  • '**********滚动条与*微调按钮**************** '一 常用方法和属性 '1 设置最大值和最小值 'Max属性 'min属性 '2 步长(每点击两边按钮和滑块增加或减少的步长) 'largechange属性,只用于滚动条,点击一次中间...
  • excel如何设置下拉框选项

    万次阅读 2021-09-03 18:06:02
    当我们需要在Excel中大量输入相同的多个数据时,可以设置下拉框选项,这能极大程度上减少我们的工作量。看看如何进行操作吧。 工具/原料 电脑 Excel表 方法/步骤 例如,我们完成如下的表格,在空白...
  • 电源按钮设置成睡眠好还是休眠好?

    千次阅读 2021-07-21 07:09:32
    电源按钮设置成睡眠好还是休眠好?只有数量很少的朋友才会对自己的电脑精雕细琢!连电源选项设置都要照顾到!好多朋友对电源按钮有误解,以为按下电源键就是关机,实际上电子技术发展到今天,出于保护电脑硬件的考虑,...
  • EXCEL设置下拉选项选项带颜色

    千次阅读 2020-10-15 10:56:04
    EXCEL设置下拉选项选项带颜色 老是要用,但是老是记不起来,这次自己记录下。 **第一步:**表格中设置你要的选项,以及对应选项的颜色。 第二步: 选中你要下拉的选项列,数据 — 插入下拉选项 — 对话框中选择...
  • 在窗体中建立一个单选按钮数组(含4个单选按钮,标题分别为“选项1”、“选项2”、“选项3”、“选项4” )和一个命令按钮(标题为“下一个” )。初始状态下,“选项1”为选中状态,如图所示。要求每单击命令按钮...
  • 设置bootstrap按钮组默认选中状态

    千次阅读 2019-09-30 10:09:38
    使用bootstrap(V3.3.7)按钮组(btn-group)时,很多时候我们需要按钮组在显示的时候,预先设置一个按钮处于选中状态。 <div class="text-right" style="margin-bottom:0.5em;"> 排序:<span class="btn-...
  • QT设置背景图片以及设置按钮

    千次阅读 2018-08-14 15:10:46
    1.Qt设置背景图片  ①。设置UI窗口背景图片,需要在构造函数中添加以下代码: this-&gt; setAutoFillBackground(true); QPalette palette = this-&gt; palette();  Palette.setBrush(Qpalette ::...
  • 谷歌浏览器如何设置internet选项

    万次阅读 2021-04-01 11:05:46
    歌浏览器设置internet选项具体操作方法如下: 1、首先进入谷歌浏览器主页,点击浏览器工具栏上的Chrome菜单(三横那个按钮) 2、点击菜单,然后打开设置。 3、把网页拉到最下面,找到底部的“显示高级设置....
  • 博客园设置代码复制按钮

    万次阅读 2021-02-02 13:27:14
    将下方代码贴到博客园中设置选项里面的页面定制CSS代码中: /*添加按钮*/ .cnblogs-markdown pre { position: relative; } .cnblogs-markdown pre > span { position: absolute; top: 0; right: 0; border-...
  • unity中的摇杆按钮设置

    千次阅读 2021-11-17 11:34:44
    摇杆设备的所有按钮都有顺序编号,下图按钮框内的1到16分别对应摇杆设备的各个按钮。 若要使用摇杆的某个按钮需按joystick button +按钮编号的格式设置...下图红线框住的选项设置表示:摇杆7号按钮的操作 ...
  • 如下图所示 头部有6个选项卡 被选中的选项卡背景色为白色 本文只给出html和js代码 样式表就不贴了 第一个选项卡对应div的内容 第二个选项卡对应div的内容 可以看出是有切换内容的 表格都不一样 头部选项卡代码 &...
  • Python中Button按钮组件常用的属性及参数设置 本篇文章中小编给大家介绍Button按钮组件的相关常用的属性以及参数的设置。 1. 常用属性使用语法 变量=Button(父容器(根窗口),参数=参数值) 2. 常用参数说明 [ ]...
  • 突然想设置两个竖排显示的按钮,找了半天,终于发现了方法,分享给大家。 其实很简单,只要设置按钮显示的文字每个字后面加一个`\n`换行符,并把按钮拉高就好了。
  • QT 为按钮添加图标并设置透明

    万次阅读 多人点赞 2019-05-24 21:44:13
    QT 为按钮添加图标并设置透明 qt中自带的控件有时不能满足我们的需求,这时可以自定义一些控件,最简单的是将按钮变成我们想要的图标,在尝试的过程中有一个按钮的阴影问题,我的想法是添加图标后就完全看不到阴影...
  • Axure如何设置二选一的按钮

    千次阅读 2020-05-27 09:49:33
    用axure设置界面时有时需要设置二选一的按钮,如:性别,是否。 效果: 设置步骤: 拉出两个按钮,分别可以设置按钮内容。设置完毕后,把两个按钮全选,右键,指定单选按钮组即可。 附上: axuer的一个入门教程。...
  • 功能需求,在下拉选项框内,追加一个添加的按钮,点击可以添加新的被选项内容; 效果展示如下: 代码实现封装组件: <template> <span> <el-cascader ref="cascader" v-model=...
  • radio-group 标签组设置默认选择checked: ‘true’,选择了单选按钮的非默认选项(场外),再点击其他的选择(手续费率),单选按钮又会变成默认的选项(场内) 默认状态如下: 基金类型选择非默认选项「场外」 ...
  • el-tab组件设置添加按钮

    万次阅读 2018-09-21 10:56:03
    element的el-tab默认添加按钮不能满足需求,所以自己通过el-tab-pane模拟了一个添加按钮。先上效果图: 最后的添加按钮实际上是一个el-tab-pane,但是却实现了添加的效果,在渲染el-tab时就需要添加 &lt;...
  • 参考博文:http://blog.csdn.net/xuanzhangyang/article/details/45418103首先创建一个MFC的对话框工程,并拉几个按钮(本文中假设3个,Button1,Button2,Button3)放在对话框上,注意留出一定的空间给子对话框。...
  • JAVA 如何改变按钮大小问题

    千次阅读 2020-02-18 21:35:42
    本人用java写一个小界面,现在有一个面板p1用来存放两个按钮 然后主框架要放三个按钮,并且要改变它的位置和大小使得看起来美观,但现在一使用setBounds方法父容器就要定义为null, 但一旦定义为null我的之前的面板...
  • 比如,选中单选按钮的一个选项,其他单选按钮的相同选项也被选中;取消选择,其他的也被取消选择 在普通报表中选中最上方的单选按钮的框进行组件设置,点击事件,点击添加事件,选中状态改变。 里面的js如下: var ...
  • 微信小程序设置单选按钮

    千次阅读 2018-05-11 10:06:45
    要实现这个功能,首先你要计算题的总个数,然后算出你的选项和题号组成的数组里面的个数,最后,把两个获取到的数值进行对比,如果两个值相等,即可提交,否则提交不起作用。提交按钮控制函数( btn_disabled: true...
  • Windows磁盘管理右键无法删除卷,右键只有帮助按钮 问题:电脑更换固态硬盘,拆下的盘,有多个分区,想进行合并,发现在磁盘管理中,OEM分区及EFI分区,容量很小,但是右键无法删除分区,只有帮助选项,如下图所示:...
  • 有的时候想让GUI的按钮变灰,设置为不能点击状态,只有点击了另一个按钮后才能恢复该按钮的功能,举个例子,如下图所示,此时步骤1和步骤2这两个按钮是点击不了的,只有先点击了“打开图像”这个按钮,才能开启...
  • 制作Excel报表,有时需要设定选项按钮(radiobutton), 而不同项目的选项按钮需要归为一组,以避免相互影响。 分组方法有多种,下面举例说明: 如果使用的是窗体控件的选项按钮:   那么只好用“分组框”...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 533,637
精华内容 213,454
关键字:

怎么设置选项按钮