没有边框的tkinter小部件

时间:2017-05-05 01:56:48

标签: python tkinter

我希望tkinter尽可能“现代”,可能还有ttk。现代按钮,下拉盒等通常在背景下完全平坦,没有任何边框。我尝试过像

这样的事情
ttk.Style().configure("TCombobox", padding=4, relief="flat",borderwidth = 
0,shiftrelief = 0 )

等,但似乎没有删除边框。有什么我想念的吗?理想情况下,例如,“按钮”看起来就像StackOverflow上的一个类型的这个框架顶部的按钮:只是一个透明背景且没有边框的符号

2 个答案:

答案 0 :(得分:0)

添加所需按钮的非动态图像,然后检查Button-1单击的event.x和event.y属性(鼠标按下)。使用这些坐标来确定用户是否点击了"按钮"。

答案 1 :(得分:0)

此脚本应该可以帮助您了解正在进行的操作'

import tkinter as tk
from tkinter import ttk

root = tk.Tk()
c = ttk.Combobox(root)
c.grid()

style = 'TCombobox'

s = ttk.Style()
elements = s.layout(style)

def get_element_details(elem, _dict, depth=1):
    print('%selement: %s' % (''.join(['\t' for s in range(depth)]), elem))
    for key in _dict:
        if key != 'children':
            print('%s%s: %s' % (''.join(['\t' for s in range(depth+1)]), key, _dict[key]))
    print('%soption: %s' % (''.join(['\t' for s in range(depth+1)]), s.element_options(elem)))
    if 'children' in _dict:
        for child, child_dict in _dict['children']:
            get_element_details(child, child_dict, depth+1)

print('element: %s' % style)
print('option: %s' % str(s.element_options(style)))
for elem, elem_dict in elements:
    get_element_details(elem, elem_dict)

因此,对于给定的样式,它遍历每个子元素的布局,并以递归方式返回布局信息和选项。

为Combobox运行时,我得到:

element: TCombobox
option: ()
    element: Combobox.field
        sticky: nswe
        option: ()
        element: Combobox.downarrow
            side: right
            sticky: ns
            option: ()
        element: Combobox.padding
            expand: 1
            sticky: nswe
            option: ('-padding', '-relief', '-shiftrelief')
            element: Combobox.focus
                expand: 1
                sticky: nswe
                option: ('-focusfill',)
                element: Combobox.textarea
                    sticky: nswe
                    option: ('-font', '-width')

然而,当我尝试时:

s.configure('Combobox.padding', relief='flat', shiftrelief='flat')

s.configure('TCombobox.padding', relief='flat', shiftrelief='flat')
在Windows上我没有看到边框发生变化,可能无法在python绑定中实现。

编辑: 还有一个库Pwm可以从其他tkinter小部件构建小部件,这意味着(通过相当多的工作)你可以重新设置这些子小部件的样式,但我发现Pwm的组合框看起来比ttk更糟糕。版本