質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.07%

変数宣言でsyntaxerrorが生じます

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 712

geek.000

score 9

コード

!/usr/bin/python3

 -*- coding: utf-8 -*-

import sys
import os
import time
from PyQt5.QtWidgets import (QWidget, QApplication, QCheckBox, QHBoxLayout,QVBoxLayout, QPushButton, QGridLayout, QLineEdit, QLabel, QMessageBox)

answers = ['NONE' for i in range(6)]
group_right_or_not = ['×' for i in range(6)]
group_number = 0
ANSWER = 'サバイバー'

if os.path.exists('performance{}.txt'.format(sys.argv[1])):
f = open('performance{}.txt'.format(sys.argv[1]), 'r')
lines = f.readlines()
for i in range(6):
answers[i] = lines[i][7:-4]
else:
pass

class Example(QWidget):
def init(self):
super().init()
self.initUI()
self.file()

def initUI(self):
numberlabel = QLabel('グループ番号')
hbox1  = QHBoxLayout()
hbox1.addWidget(numberlabel)
hbox1.addStretch(1)

self.cb1 = QCheckBox('グループ1', self)
self.cb2 = QCheckBox('グループ2', self)
self.cb3 = QCheckBox('グループ3', self)
self.cb4 = QCheckBox('グループ4', self)
self.cb5 = QCheckBox('グループ5', self)
self.cb6 = QCheckBox('グループ6', self)
self.cb1.setChecked(False)
self.cb2.setChecked(False)
self.cb3.setChecked(False)
self.cb3.setChecked(False)
self.cb4.setChecked(False)
self.cb5.setChecked(False)
self.cb6.setChecked(False)

self.cb1.stateChanged.connect(lambda:self.btnstate(self.cb1))
self.cb2.stateChanged.connect(lambda:self.btnstate(self.cb2))
self.cb3.stateChanged.connect(lambda:self.btnstate(self.cb3))
self.cb4.stateChanged.connect(lambda:self.btnstate(self.cb4))
self.cb5.stateChanged.connect(lambda:self.btnstate(self.cb5))
self.cb6.stateChanged.connect(lambda:self.btnstate(self.cb6))

self.grid = QGridLayout()
self.grid.setSpacing(30)

self.grid.addWidget(self.cb1, 0, 0)
self.grid.addWidget(self.cb2, 1, 0)
self.grid.addWidget(self.cb3, 2, 0)
self.grid.addWidget(self.cb4, 0, 1)
self.grid.addWidget(self.cb5, 1, 1)
self.grid.addWidget(self.cb6, 2, 1)

self.passlabel = QLabel('パスワード')
self.self.self.hbox2 = QHBoxLayout()
self.self.hbox2.addWidget(passlabel)
self.hbox2.addStretch(1)

self.passinput = QLineEdit()
self.hbox3 = QHBoxLayout()
self.hbox3.addStretch(1)
self.hbox3.addWidget(passinput)
self.hbox3.addStretch(1)

self.okbutton = QPushButton('OK')
self.okbutton.clicked.connect(lambda: buttonClicked(group_number, passinput)
self.hbox4 = QHBoxLayout()
self.hbox4.addStretch(1)
self.hbox4.addWidget(okbutton)

self.self.vbox = QVBoxLayout()
self.vbox.addStretch(1)
self.vbox.addLayout(hbox1)
self.vbox.addLayout(grid)
self.vbox.addLayout(hbox2)
self.vbox.addLayout(hbox3)
self.vbox.addWidget(okbutton)
self.vbox.addLayout(hbox4)
self.vbox.addStretch(1)

self.setLayout(vbox)

self.showFullScreen()

def btnstate(self, cb):
if cb.text() == 'グループ1':
if cb.isChecked() == True:
self.cb2.setChecked(False)
self.cb3.setChecked(False)
self.cb4.setChecked(False)
self.cb5.setChecked(False)
self.cb6.setChecked(False)
group_number = 1

else:
group_number = None

if cb.text() == 'グループ2':
if cb.isChecked() == True:
self.cb1.setChecked(False)
self.cb3.setChecked(False)
self.cb4.setChecked(False)
self.cb5.setChecked(False)
self.cb6.setChecked(False)
group_number = 2

else:
group_number = None

if cb.text() == 'グループ3':
if cb.isChecked() == True:
self.cb1.setChecked(False)
self.cb2.setChecked(False)
self.cb4.setChecked(False)
self.cb5.setChecked(False)
self.cb6.setChecked(False)
group_number = 3

else:
group_number = None

if cb.text() == 'グループ4':
if cb.isChecked() == True:
self.cb1.setChecked(False)
self.cb2.setChecked(False)
self.cb3.setChecked(False)
self.cb5.setChecked(False)
self.cb6.setChecked(False)
group_number = 4

else:
group_number = None

if cb.text() == 'グループ5':
if cb.isChecked() == True:
self.cb1.setChecked(False)
self.cb2.setChecked(False)
self.cb3.setChecked(False)
self.cb4.setChecked(False)
self.cb6.setChecked(False)
group_number = 5

else:
group_number = 5

if cb.text() == 'グループ6':
if cb.isChecked() == True:
self.cb1.setChecked(False)
self.cb2.setChecked(False)
self.cb3.setChecked(False)
self.cb4.setChecked(False)
self.cb5.setChecked(False)
group_number = 6

else:
group_number = None

def buttonClicked(self, group_number, passinput):
global group_number
answers[group_number - 1] = passinput.text()
self.showDialog

self.cb1.setChecked(False)
self.cb2.setChecked(False)
self.cb3.setChecked(False)
self.cb4.setChecked(False)
self.cb5.setChecked(False)
self.cb6.setChecked(False)
group_number = None
passinput.clear()

def showDialog(self):
msg = QMessageBox()
msg.setText('入力完了。制限時間内であれば何回でも再入力可能です。')
ok = msg.addButton('OK', QMessageBox.OK)

def file(self):
for i in range(6):
if answers[i] == ANSWER:
group_right_or_not[i] = '○'
else:
pass

f = open('performance{}.txt'.format(sys.argv[1]), 'w')

for i in range(6):
f.write('group' + str(i + 1) + ':' + answers[i] + '--' + group_right_or_not[i] + '\n')

if name == 'main':

app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
コード全文とエラー表示です

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • tamy

    2017/07/09 21:12

    コードはきちんとコードブロック内に書いてください.ただでさえ読みづらいし,インデントが意味を持つ言語なので,インデントなしでエラー原因を特定するのは難しいです.

    キャンセル

  • _Victorique__

    2017/07/09 22:18

    エラー文を書かないと分からないでしょう。超能力者じゃないんですから

    キャンセル

回答 1

checkベストアンサー

0

エラーの原因はは大きく2つ
1.

    self.okbutton.clicked.connect(lambda: buttonClicked(group_number, passinput)


の部分(エラーが起きている行の1つ前の行)にて、括弧の数があってません(閉じ括弧が1つ少ない)

2.

   def buttonClicked(self, group_number, passinput):
       global group_number


の部分にて、引数でgroup_numberがあるにも関わらず、同名の group_numberを global宣言している

引数名を修正するべきかと思います

とりあえず以上です。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/08/07 22:51

    返答遅くなってすいません。おかげさまで解決しました。ありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.07%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る