2017-08-17 19 views
0

私はfrom tkinter.ttk import *をインポートしました。私のドロップダウンメニューは正しく動作します。このモジュールでは、ドロップダウンメニューはいくつかの選択肢を複製し、ウィンドウの幅をテキストの幅にします内部。from tkinter.ttk import *チェックボックスのリストとの干渉

ただし、チェックボックスによるモジュールのウィンドウは機能せず、空白のウィンドウ以外は表示されません。 私は何ができるので、両方とも正しく動作します。

import random 
from tkinter import * 
from tkinter.ttk import * 

with open('Comedy films', encoding='latin-1') as f: 
    lines = f.readlines() 
    value_fifteen_one=(random.choice(lines)) 
    value_fifteen_two=(random.choice(lines)) 
    value_fifteen_three=(random.choice(lines)) 
    value_fifteen_four=(random.choice(lines)) 
    value_fifteen_five=(random.choice(lines)) 

def menu_fifteen():  
    root15 = Tk() 
    root15.title("Film choices") 

    menu = Frame(root15) 
    menu.pack(pady = 5, padx = 50)   
    var = StringVar(root15) 

    options = [ 
      value_fifteen_one, 
      value_fifteen_two, 
      value_fifteen_three, 
      value_fifteen_four, 
      value_fifteen_five, 
    ] 
    option = OptionMenu(menu, var, options[0], *options, command=functionsfifteen) 
    var.set('Select') 
    option.grid(row = 1, column = 1) 

    root15.mainloop() 


def functionsfifteen(value): 
    if value == value_fifteen_one:    
     print("Playing "+value_fifteen_one) 
    if value == value_fifteen_two:    
     print("Playing "+value_fifteen_two) 
    if value == value_fifteen_three:    
     print("Playing "+value_fifteen_three) 
    if value == value_fifteen_four:    
     print("Playing "+value_fifteen_four) 
    if value == value_fifteen_five:    
     print("Playing "+value_fifteen_five) 

コードチェックボックス:ドロップダウンのための

コードを使用すると、特にTkinterのとTTKで、ワイルドカードの輸入を行うべきではない理由を

def interests(): 
    check = Tk() 
    check.title("Interests") 

    CheckVar1 = BooleanVar() 
    CheckVar2 = BooleanVar() 
    CheckVar3 = BooleanVar() 
    CheckVar4 = BooleanVar() 


    C1 = Checkbutton(check, text = "Horror", variable = CheckVar1, \ 
        onvalue = 1, offvalue = 0, height=1, \ 
        width = 20) 
    C2 = Checkbutton(check, text = "Action", variable = CheckVar2, \ 
        onvalue = 1, offvalue = 0, height=1, \ 
        width = 20) 
    C3 = Checkbutton(check, text = "Science fiction", variable = CheckVar3, \ 
        onvalue = 1, offvalue = 0, height=1, \ 
        width = 20) 
    C4 = Checkbutton(check, text = "Comedy", variable = CheckVar4, \ 
        onvalue = 1, offvalue = 0, height=1, \ 
        width = 20) 

    def submitHandle(): 
     anyChecked = CheckVar1.get() | CheckVar2.get() | CheckVar3.get(
     ) | CheckVar4.get() 
     if anyChecked: 
      check.destroy() 
     else: 
      messagebox.showerror("Error", "Please check at least one.") 

    submit_btn = Button(check, text="Submit", command=lambda: submitHandle()) #Submit button on the check button menu window 


    C1.pack() 
    C2.pack() 
    C3.pack() 
    C4.pack() 
    submit_btn.pack() 
    check.mainloop() 


    if CheckVar1.get(): 
     filename = ("Horror"); 
     with open (filename, "a") as f: 
      f.write("") 

    if CheckVar2.get(): 
     filename = ("Action"); 
     with open (filename, "a") as f: 
      f.write("") 

    if CheckVar3.get(): 
     filename = ("Science fiction"); 
     with open (filename, "a") as f: 
      f.write("") 

    if CheckVar4.get(): 
     filename = ("Comedy"); 
     with open (filename, "a") as f: 
      f.write("") 

答えて

1

これは正確です。どちらも同じ名前のオブジェクトをエクスポートします。

最適な解決策は、インポートを変更し、コードを一致させるように変更することです。

import tkinter as tk 
import tkinter.ttk as ttk 
... 
root15 = tk.Tk() 
... 
+0

ありがとう、簡単な質問 - 私は何をメニューとして定義しますか?フレームはインポートの一部ではないため定義されていません。 – user8469209

+0

@ user8469209:tk.Frame、tk.Menu、tk.Button、... –

関連する問題